Python文件读写教程_文本CSVJSON操作详解

7次阅读

Python 文本处理需用 open()指定编码(如 utf-8),with 语句确保关闭;CSV 用 csv 模块避免手动分割;JSON 用 json 模块序列化,注意编码、indent 和 ensure_ascii 参数及非标准类型处理。

Python 文件读写教程_文本 CSVJSON 操作详解

读写文本文件:掌握基础操作

Python 处理文本最常用的是内置的 open() 函数。默认以只读模式(‘r’)打开,返回一个文件对象。写入需显式指定模式:‘w’(覆盖写)、‘a’(追加写)。记得用 with 语句自动关闭文件,避免资源泄漏。

  • 读取全部内容:file.read() 返回字符串;file.readlines() 返回每行带换行符的列表
  • 逐行处理更省内存:for line in file: 直接迭代,line 包含末尾的 n,可用 .strip() 去除
  • 写入时注意 编码:中文务必加 encoding=’utf-8′,否则可能报错或乱码

CSV 文件处理:用 csv 模块更安全

别用普通文本方式手动切分逗号——CSV 字段本身可能含逗号、换行或引号。Python 标准库 csv 模块专为解决这类问题设计。

  • 读取:用 csv.reader(f) 得到可迭代的行(每行是字符串列表);或用 csv.DictReader(f),首行作键,返回字典,更直观
  • 写入:用 csv.writer(f)writerow()writerows();若用 DictWriter,需提前传入 fieldnames 并调用 writeheader()
  • 注意:打开 CSV 文件时,Windows 下建议加 newline=” 参数,防止空行;其他系统影响不大

JSON 数据交换:序列化与反序列化

JSON 是轻量级数据格式,Python 通过 json 模块实现 dict/list/str/int/float/bool/None 与 JSON 字符串的互转。它不支持 datetime、自定义类等类型,需额外处理。

  • 从文件读 JSON:json.load(f);从字符串解析:json.loads(s)
  • 写入文件:json.dump(data, f);生成字符串:json.dumps(data)
  • 常用参数:indent=2 让输出美观可读;ensure_ascii=False 保留中文字符(否则转成 uXXXX)
  • 遇到非标准类型(如日期),可传入 default 函数,例如 default=str 把日期转字符串

常见问题 与避坑提醒

实际操作中容易忽略细节,导致报错或数据异常。

立即学习Python 免费学习笔记(深入)”;

  • UnicodeDecodeError?多半是编码没对上。先确认文件真实编码(如用 Notepad++ 查看),再在 open() 中指定,不要依赖默认
  • 写入后文件为空或内容丢失?检查是否漏了 f.close() 或未用 with;也可能是用 ‘w’ 模式误删了原内容
  • CSV 中 中文乱码 或 Excel 打不开?保存时用 UTF-8 with BOM(部分旧版 Excel 需要),或改用 utf-8-sig 编码
  • JSON 中有 NaN、Inf?Python 的 float(‘nan’) 不被 json 支持,需预处理替换为 None 或字符串
text=ZqhQzanResources