当前位置:首页 > Python > 正文

Python平面文件存储教程:txt、csv与json操作指南

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文件操作技巧

  • 使用DictReaderDictWriter处理带表头的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文件避免使用evalpickle解析不受信任的数据
  • 设置适当的文件权限保护敏感数据

掌握Python文件操作

平面文件存储是Python开发中的基础技能。通过本教程,您已学习到txt、csv和json文件的读写方法,以及如何根据需求选择合适的存储格式。

继续实践这些技术,您将能够高效地处理各种数据存储需求!

发表评论