跳转到主要内容
杨月昌的软件博客
返回

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 数据交换。

开发建议:



上一篇
给 Hexo 加个后台,轻松实现博客在线管理
下一篇
打造高效 Markdown 编辑器:BootstrapBlazor + FreeSql 实战案例