625 字
3 分钟
Python 文件操作进阶指南:Txt、Json 与 Csv 的高效读写
1. Python 文件操作核心逻辑
在 Python 中,文件操作遵循“打开 (Open) -> 操作 (Action) -> 关闭 (Close)”的生命周期。使用 with 语句可以确保文件在操作完成后自动关闭,避免内存泄漏。
常用模式对照表
| 模式 | 描述 |
|---|---|
| ’w’ | 覆盖写:清空原内容并写入新内容,文件不存在则创建。 |
| ‘a’ | 追加写:在原内容末尾继续写入,不覆盖。 |
| ‘r’ | 只读:文件必须存在,否则报错。 |
2. 结构化数据存储:写入操作
2.1 文本文件 (TXT) —— 纯粹、简单
最基础的格式,适合日志记录或简单的信息存储。
data = "Hello Python, \nHello World!"# 建议:始终显式指定 encoding="utf-8" 防止中文乱码with open("test.txt", "w", encoding="utf-8") as f: f.write(data)print("TXT 写入完成!")2.2 JSON 文件 —— 现代、标准
JSON 是 Web 开发中最流行的数据交换格式。
import json
info = {"name": "张三", "age": 25, "tags": ["Python", "爬虫"]}with open("test.json", "w", encoding="utf-8") as f: # indent=4 让生成的 JSON 更易读,ensure_ascii=False 确保中文字符正常显示 json.dump(info, f, indent=4, ensure_ascii=False)print("JSON 写入完成!")2.3 CSV 文件 —— 表格、统计
适合存储结构整齐的列表或数据库导出的表格数据。
import csv
header = ["name", "age"]rows = [ {"name": "shannon-li", "age": 4}, {"name": "tech-vlog", "age": 10}]
# 注意:newline="" 是为了防止在某些 Windows 环境下出现多余的空行with open("test.csv", "w", encoding="utf-8", newline="") as f: writer = csv.DictWriter(f, fieldnames=header) writer.writeheader() writer.writerows(rows) # 批量写入多行数据print("CSV 写入完成!")3. 数据恢复:读取操作
3.1 读取 TXT:逐行或全部
with open("test.txt", "r", encoding="utf-8") as f: # f.read() 读取全部,f.readlines() 读取为列表 print(f"内容:{f.read()}")3.2 解析 JSON:转换为 Python 字典
with open("test.json", "r", encoding="utf-8") as f: try: data = json.load(f) print(f"解析后的 Python 字典:{data}") except json.JSONDecodeError: print("错误:JSON 格式不规范!")3.3 解析 CSV:字典映射读取
with open("test.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) # 将每一行解析为 OrderedDict content = [row for row in reader] print(f"解析后的 CSV 数据:{content}")4. 总结与最佳实践
- TXT:用于非结构化的随笔、日志。
- JSON:用于配置文件、API 响应数据存储。
- CSV:用于数据分析、Excel 数据交换。
开发建议:
- 编码统一:始终坚持使用
utf-8。 - 安全读取:在读取外部 JSON 时,务必使用
try...except捕获异常,防止因文件损坏导致程序崩溃。 - 路径管理:在大型项目中,建议结合
os.path或pathlib模块来动态处理文件路径。
Python 文件操作进阶指南:Txt、Json 与 Csv 的高效读写
https://sw.rscclub.website/posts/python3pachongtxtcsv/