上一篇
Python平面文件存储教程:txt、csv与json操作指南
- Python
- 2025-08-08
- 599
Python平面文件存储教程
学习使用Python操作txt、csv和json文件进行数据存储
平面文件存储介绍
平面文件是一种以纯文本形式存储数据的文件,不包含任何结构化二进制信息。Python中常用的平面文件格式包括:
TXT文件
纯文本格式,适用于简单数据存储和日志记录
CSV文件
逗号分隔值格式,适用于表格数据存储
JSON文件
轻量级数据交换格式,适用于结构化数据存储
平面文件存储的优点:
- 简单易用,无需复杂配置
- 跨平台兼容性好
- 人类可读,便于调试
- 适用于小型到中型数据集
TXT文件操作
TXT文件是最简单的平面文件格式,适用于存储纯文本数据。
写入TXT文件
# 写入txt文件
with open('data.txt', 'w', encoding='utf-8') as file:
file.write("姓名: 张三\n")
file.write("年龄: 30\n")
file.write("职业: 软件工程师\n")
print("数据已写入data.txt文件")
读取TXT文件
# 读取txt文件
with open('data.txt', 'r', encoding='utf-8') as file:
content = file.read()
print("文件内容:")
print(content)
# 逐行读取
with open('data.txt', 'r', encoding='utf-8') as file:
print("\n逐行内容:")
for line in file:
print(line.strip())
TXT文件操作注意事项
- 使用
with
语句自动管理文件资源 - 指定文件编码(推荐UTF-8)避免乱码
- 使用
strip()
方法移除行尾换行符 - 处理大文件时使用逐行读取避免内存不足
CSV文件操作
CSV(逗号分隔值)文件是存储表格数据的标准格式。
使用csv模块写入CSV文件
import csv
# 准备数据
employees = [
{'name': '张三', 'age': 30, 'department': '研发部'},
{'name': '李四', 'age': 28, 'department': '市场部'},
{'name': '王五', 'age': 35, 'department': '财务部'}
]
# 写入CSV文件
with open('employees.csv', 'w', newline='', encoding='utf-8') as file:
fieldnames = ['name', 'age', 'department']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # 写入表头
writer.writerows(employees) # 写入多行数据
print("员工数据已保存到employees.csv")
读取CSV文件
import csv
# 读取CSV文件
with open('employees.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
print("员工信息:")
for row in reader:
print(f"姓名: {row['name']}, 年龄: {row['age']}, 部门: {row['department']}")
CSV文件操作技巧
- 使用
DictReader
和DictWriter
处理带表头的CSV文件 - 指定
newline=''
避免Windows系统出现空行 - 处理特殊字符时考虑使用不同的分隔符(如分号)
- 使用
csv.Sniffer
自动检测CSV格式
JSON文件操作
JSON(JavaScript Object Notation)是轻量级的数据交换格式,易于人阅读和编写。
写入JSON文件
import json
# Python数据结构
product = {
"id": 101,
"name": "无线鼠标",
"price": 129.99,
"in_stock": True,
"tags": ["电子产品", "电脑配件", "无线设备"],
"specs": {
"weight": "120g",
"battery": "可充电锂电池",
"connection": "蓝牙5.0"
}
}
# 写入JSON文件
with open('product.json', 'w', encoding='utf-8') as file:
json.dump(product, file, ensure_ascii=False, indent=4)
print("产品数据已保存到product.json")
读取JSON文件
import json
# 读取JSON文件
with open('product.json', 'r', encoding='utf-8') as file:
product_data = json.load(file)
print("产品信息:")
print(f"名称: {product_data['name']}")
print(f"价格: ¥{product_data['price']}")
print(f"规格 - 重量: {product_data['specs']['weight']}")
print(f"标签: {', '.join(product_data['tags'])}")
JSON文件处理要点
- 使用
indent
参数美化输出 - 设置
ensure_ascii=False
正确保存非ASCII字符 - 使用
json.dumps()
和json.loads()
处理字符串 - 处理日期等特殊类型时需要自定义编码解码器
文件格式比较与选择指南
格式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
TXT | 简单、通用、易读 | 无结构、无数据类型 | 日志、配置文件、简单数据存储 |
CSV | 表格数据友好、易导入导出 | 无嵌套结构、无数据类型 | 电子表格数据、数据库导出 |
JSON | 结构化数据、支持复杂类型 | 冗余度高、文件较大 | 配置数据、API响应、结构化存储 |
选择建议
- 选择TXT:当数据简单且不需要结构化时
- 选择CSV:处理表格数据或需要与电子表格软件交互时
- 选择JSON:存储结构化数据或需要保留数据类型时
Python文件操作最佳实践
文件路径处理
- 使用
os.path
模块处理跨平台路径 - 使用
pathlib
模块(Python 3.4+)进行现代路径操作 - 避免硬编码路径,使用配置文件或命令行参数
错误处理
- 使用
try-except
块处理文件操作异常 - 处理
FileNotFoundError
等特定异常 - 确保文件操作失败时程序能够优雅降级
性能优化
- 大文件操作时使用缓冲和分块处理
- 考虑使用内存映射文件处理超大文件
- 压缩存储空间占用大的文件(如JSON)
安全注意事项
- 验证文件路径防止目录遍历攻击
- 处理用户上传文件时要格外小心
- JSON文件避免使用
eval
或pickle
解析不受信任的数据 - 设置适当的文件权限保护敏感数据
掌握Python文件操作
平面文件存储是Python开发中的基础技能。通过本教程,您已学习到txt、csv和json文件的读写方法,以及如何根据需求选择合适的存储格式。
继续实践这些技术,您将能够高效地处理各种数据存储需求!
本文由GuoSuiYan于2025-08-08发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257663.html
发表评论