📂 Python文件操作完全指南:从基础到高级技巧
文件操作是Python编程中最实用的技能之一。无论是读取配置文件、处理日志数据,还是批量处理文件,掌握文件操作都能让你的程序更加强大。本文将从基础到高级,全面介绍Python文件操作的各种技巧。
一、基础文件操作
1.1 打开和关闭文件
Python使用内置的 open() 函数来打开文件:
# 基础打开方式
file = open('data.txt', 'r', encoding='utf-8')
content = file.read()
file.close() # 必须关闭文件
# 推荐:使用 with 语句(自动关闭)
with open('data.txt', 'r', encoding='utf-8') as file:
content = file.read()
# 文件自动关闭,无需手动调用 close()
1.2 文件打开模式
| 模式 | 说明 |
|---|---|
| 'r' | 只读(默认) |
| 'w' | 写入(覆盖原有内容) |
| 'a' | 追加(在末尾添加) |
| 'x' | 独占创建(文件存在则报错) |
| 'b' | 二进制模式(如 'rb', 'wb') |
| '+' | 读写模式(如 'r+', 'w+') |
二、读取文件内容
2.1 不同读取方式
# 读取整个文件
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read() # 返回字符串
# 逐行读取(推荐大文件使用)
with open('data.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip()) # strip() 去除换行符
# 读取为列表
with open('data.txt', 'r', encoding='utf-8') as f:
lines = f.readlines() # 每行作为列表的一个元素
2.2 读取指定字节数
with open('data.txt', 'r', encoding='utf-8') as f:
chunk = f.read(1024) # 读取1024个字符
while chunk:
print(chunk)
chunk = f.read(1024) # 继续读取
三、写入文件
3.1 基本写入操作
# 写入字符串(覆盖模式)
with open('output.txt', 'w', encoding='utf-8') as f:
f.write('Hello, Python!\n')
f.write('第二行内容\n')
# 追加内容
with open('output.txt', 'a', encoding='utf-8') as f:
f.write('追加的内容\n')
# 写入多行
lines = ['第一行\n', '第二行\n', '第三行\n']
with open('output.txt', 'w', encoding='utf-8') as f:
f.writelines(lines)
四、高级文件操作
4.1 文件和目录操作(os 和 pathlib)
import os
from pathlib import Path
# 检查文件是否存在
print(os.path.exists('data.txt'))
print(Path('data.txt').exists())
# 获取文件大小
size = os.path.getsize('data.txt')
# 创建目录
os.makedirs('new_folder', exist_ok=True)
Path('new_folder').mkdir(parents=True, exist_ok=True)
# 列出目录内容
files = os.listdir('.')
files = [f for f in os.listdir('.') if f.endswith('.txt')]
# 重命名和删除
os.rename('old.txt', 'new.txt')
os.remove('file.txt') # 删除文件
os.rmdir('empty_folder') # 删除空目录
4.2 批量处理文件
import os
import glob
# 使用 glob 匹配文件
py_files = glob.glob('*.py')
all_txt = glob.glob('**/*.txt', recursive=True) # 递归搜索
# 批量重命名
for i, filename in enumerate(os.listdir('.')):
if filename.endswith('.txt'):
new_name = f'data_{i:03d}.txt'
os.rename(filename, new_name)
# 批量读取处理
for filepath in glob.glob('data/*.txt'):
with open(filepath, 'r', encoding='utf-8') as f:
process_data(f.read())
4.3 临时文件
import tempfile
# 创建临时文件
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f:
f.write('临时数据')
temp_path = f.name
print(f'临时文件: {temp_path}')
# 创建临时目录
temp_dir = tempfile.mkdtemp()
print(f'临时目录: {temp_dir}')
五、CSV 和 JSON 文件
5.1 CSV 文件处理
import csv
# 读取 CSV
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row) # 每行是列表
# 读取为字典
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['name']) # 通过列名访问
# 写入 CSV
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '年龄', '城市'])
writer.writerows(data_list)
5.2 JSON 文件处理
import json
# 读取 JSON
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f) # 转为 Python 对象
# 写入 JSON
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
六、文件操作最佳实践
- 始终使用 with 语句:确保文件正确关闭,避免资源泄漏
- 指定编码:使用 encoding='utf-8' 避免中文乱码
- 处理异常:使用 try-except 捕获文件不存在等错误
- 大文件处理:逐行读取,避免一次性加载到内存
- 路径处理:使用 pathlib 或 os.path.join 处理跨平台路径
try:
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read()
except FileNotFoundError:
print('文件不存在!')
except PermissionError:
print('没有权限读取文件!')
except Exception as e:
print(f'读取错误: {e}')
总结
Python的文件操作简单而强大。掌握 with 语句、不同读取方式、路径操作和常见格式(CSV/JSON)处理,你就能应对绝大多数文件操作需求。记住:安全处理文件(异常处理、正确关闭)和高效处理(大文件逐行读取)同样重要!
本文内容由 AI 生成,如有错误欢迎指正。

浙公网安备 33010602011771号