Python文件读写实战指南:从基础文本到CSV JSON处理

凌晨两点半
凌晨两点半
发布时间:2026-10-12 | 3人浏览过
原创

掌握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操作与数据持久化的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表