Python文件读写实战指南:从基础文本到CSV JSON处理
掌握Python文件读写的核心方法,可覆盖纯文本处理到CSV、JSON等结构化数据的日常开发需求。本文梳理了基于open函数的基础读取与写入操作,对比了全量读取与按行遍历的内存差异,并详解csv与json模块的标准用法,帮助开发者快速匹配不同场景的最佳实践。
选择适合场景的Python文件读写策略
在进行数据存储或日志采集时,合理选择读写模式能显著提升程序稳定性。Python内置了丰富的I/O接口,面对不同体量的文本或结构化文件,需权衡内存占用与代码复杂度。以下按操作类型梳理关键实现路径与参数细节。
一、文本读取:全量获取与逐行迭代
使用open()函数是访问本地文件的入口。指定文件路径、打开模式及字符编码(推荐'utf-8')后,可通过上下文管理器自动释放系统资源。
第1步:一次性读取完整内容
适用于配置项、短模板等轻量级文件。调用.read()会将全部内容加载至内存字符串中。
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
第2步:按行遍历处理大文件
当文件体积超过可用内存阈值时,直接循环文件对象是最省内存的做法。迭代器每次仅缓冲一行,配合.strip()清除末尾换行符,避免后续逻辑出现错位。
with open('large_log.txt', 'r', encoding='utf-8') as file:
for line in file:
processed = line.strip()
# 此处执行过滤或解析逻辑
print(processed)
二、文本写入:覆盖写入与追加模式
写入操作需严格控制模式参数。'w'为写入模式,若目标文件已存在将清空原有内容;'a'为追加模式,新内容会自动插入文件尾部而不影响旧数据。
# 【风险提醒】覆盖模式会永久删除源文件数据,批量替换前请务必备份
with open('output.txt', 'w', encoding='utf-8') as file:
file.write('Hello, Python!\n')
file.write('Welcome to file operations.\n')
# 安全追加示例
with open('output.txt', 'a', encoding='utf-8') as file:
file.write('\nGoodbye, Python!')
若需批量输出多行数据,可使用.writelines()接收字符串列表。该方法不会自动添加换行符,建议在传入数据时明确包含'\n'分隔符。
lines_to_write = ['First line.\n', 'Second line.\n', 'Third line.\n']
with open('batch_output.txt', 'w', encoding='utf-8') as file:
file.writelines(lines_to_write)
三、结构化数据:CSV 与 JSON 标准处理
表格型数据与键值对配置在工业场景中极为常见,依赖内置的专用模块可实现格式安全的序列化与反序列化。
1. CSV 表格读写
通过csv.writer逐行写入字段,通过csv.reader迭代返回元组。注意newline=''参数用于防止Windows环境下产生空行间隔。
import csv
# 写入CSV表头与记录
with open('data.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Age', 'City'])
writer.writerows([['Alice', 30, 'New York'], ['Bob', 25, 'Los Angeles']])
# 读取CSV并按列解析
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
2. JSON 序列化存储
利用json.dump()将字典或列表转为JSON流写入磁盘;读取时使用json.load()还原为Python原生对象。设置ensure_ascii=False可保留中文等非ASCII字符的原生显示。
import json
# 序列化对象并写入JSON文件
data = {'name': 'Alice', 'age': 30, 'city': 'New York'}
with open('config.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
# 从JSON文件中反序列化对象
with open('config.json', 'r', encoding='utf-8') as file:
loaded_data = json.load(file)
print(loaded_data)
操作验证与排错建议
- 文件找不到或报错
FileNotFoundError:检查路径拼写,建议使用绝对路径或在代码同级目录创建测试文件。 - 乱码问题:确认文件实际编码(如
'gbk'),并在open()中显式声明encoding参数。 - 写入内容为空:检查是否漏写
\n导致最后一行未刷新,或使用了错误的'w'模式覆盖了刚写入的数据。
以上就是Python文件读写6大实用方法的详细内容,更多关于Python基础I/O操作与数据持久化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













