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. 总结与最佳实践#

  1. TXT:用于非结构化的随笔、日志。
  2. JSON:用于配置文件、API 响应数据存储。
  3. CSV:用于数据分析、Excel 数据交换。

开发建议:

  • 编码统一:始终坚持使用 utf-8
  • 安全读取:在读取外部 JSON 时,务必使用 try...except 捕获异常,防止因文件损坏导致程序崩溃。
  • 路径管理:在大型项目中,建议结合 os.pathpathlib 模块来动态处理文件路径。
Python 文件操作进阶指南:Txt、Json 与 Csv 的高效读写
https://sw.rscclub.website/posts/python3pachongtxtcsv/
作者
杨月昌
发布于
2017-02-18
许可协议
CC BY-NC-SA 4.0