第九章:文件操作
文件读写
# 读取文件
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read() # 读取全部
# 或
lines = f.readlines() # 读取所有行
# 或
for line in f: # 逐行读取
print(line.strip())
# 写入文件
with open('file.txt', 'w', encoding='utf-8') as f:
f.write("Hello, World!\n")
f.writelines(['line1\n', 'line2\n'])
# 追加写入
with open('file.txt', 'a', encoding='utf-8') as f:
f.write("追加内容\n")
# 读写模式
with open('file.txt', 'r+', encoding='utf-8') as f:
content = f.read()
f.write("新内容")
文件路径
import os
from pathlib import Path
# os.path 方式
os.path.join('dir', 'file.txt') # 拼接路径
os.path.exists('file.txt') # 是否存在
os.path.isfile('file.txt') # 是否文件
os.path.isdir('dir') # 是否目录
os.path.basename('/path/to/file') # 文件名
os.path.dirname('/path/to/file') # 目录名
# pathlib 方式(推荐)
p = Path('dir/subdir/file.txt')
p.name # 文件名
p.parent # 父目录
p.suffix # 扩展名
p.exists() # 是否存在
p.is_file() # 是否文件
p.mkdir() # 创建目录
p.read_text() # 读取文本
p.write_text() # 写入文本
目录操作
import os
import shutil
# 创建目录
os.mkdir('new_dir')
os.makedirs('a/b/c', exist_ok=True)
# 删除
os.remove('file.txt') # 删除文件
os.rmdir('empty_dir') # 删除空目录
shutil.rmtree('dir') # 删除目录树
# 遍历目录
for root, dirs, files in os.walk('.'):
for file in files:
print(os.path.join(root, file))
# 复制
shutil.copy('src.txt', 'dst.txt')
shutil.copytree('src_dir', 'dst_dir')
CSV 文件
import csv
# 读取 CSV
with open('data.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# 写入 CSV
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['name', 'age'])
writer.writerows([['Alice', 25], ['Bob', 30]])
JSON 文件
import json
# 读取
with open('data.json', 'r') as f:
data = json.load(f)
# 写入
with open('output.json', 'w') as f:
json.dump(data, f, indent=2, ensure_ascii=False)