Administrator
发布于 2026-06-21 / 2 阅读
0
0

Python 文件操作:读写 TXT、JSON、CSV 文件实战

一、前言

前面写的所有代码数据都只存在内存里,程序关闭数据就全部消失。本篇学习 Python 文件读写,把文字、数据永久保存到本地文件,覆盖日常最常用的三种文件:纯文本 TXT、结构化 JSON、表格 CSV。

二、文件打开基础:open () 函数

1. open 基础语法

python

运行

# open(文件路径, 打开模式, 编码格式)
f = open("test.txt", "r", encoding="utf-8")
f.close()  # 用完必须关闭文件,释放资源

2. 常用打开模式

表格

模式

作用

r

只读,文件不存在则报错

w

只写,不存在自动创建,存在直接清空原有内容

a

追加写入,不会清空,在文件末尾新增内容

r+

可读可写

3. with 语句(推荐,自动关闭文件)

不用手动写close(),代码结束自动释放文件,避免忘记关闭导致损坏

python

运行

with open("test.txt", "r", encoding="utf-8") as f:
    content = f.read()
print(content)

三、TXT 文本文件读写

1. 写入 TXT(w 模式)

python

运行

# w模式:覆盖原有全部内容
with open("笔记.txt", "w", encoding="utf-8") as f:
    f.write("第一行文字\n")
    f.write("第二行Python学习记录")

2. 追加写入 TXT(a 模式)

python

运行

# 在文件末尾新增内容,不删除旧数据
with open("笔记.txt", "a", encoding="utf-8") as f:
    f.write("\n新增的一行记录")

3. 读取 TXT 三种方式

python

运行

# 方式1:read() 一次性读取全部内容
with open("笔记.txt", "r", encoding="utf-8") as f:
    all_text = f.read()
print(all_text)

# 方式2:readline() 只读一行
with open("笔记.txt", "r", encoding="utf-8") as f:
    line1 = f.readline()
print(line1)

# 方式3:readlines() 按行读取,返回列表
with open("笔记.txt", "r", encoding="utf-8") as f:
    line_list = f.readlines()
print(line_list)

四、JSON 文件读写(存储字典 / 列表结构化数据)

JSON 适合保存用户信息、配置、批量数据,需要导入内置json

1. 写入 JSON 文件(dump)

python

运行

import json

# 字典数据
user_info = {
    "name": "小李",
    "age": 21,
    "hobby": ["编程", "游戏"]
}

# 写入json
with open("user.json", "w", encoding="utf-8") as f:
    json.dump(user_info, f, ensure_ascii=False, indent=4)

参数说明:

  • ensure_ascii=False:正常显示中文,不转义

  • indent=4:格式化缩进,方便阅读

2. 读取 JSON 文件(load)

python

运行

import json

with open("user.json", "r", encoding="utf-8") as f:
    data = json.load(f)

print(data["name"])
print(data["hobby"][0])

五、CSV 表格文件读写(简易表格,无需 Excel)

CSV 是逗号分隔的表格文本,适合批量存储成绩、台账数据

1. 写入 CSV

python

运行

import csv

# 表头 + 数据
headers = ["姓名", "年龄", "分数"]
rows = [
    ["张三", 18, 86],
    ["李四", 19, 92],
    ["王五", 18, 78]
]

with open("成绩表.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(headers)  # 写入表头
    writer.writerows(rows)    # 批量写入多行

2. 读取 CSV

python

运行

import csv

with open("成绩表.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

六、综合实战:简易记事本小程序

实现输入内容、保存到 txt、读取全部记录

python

运行

def write_note():
    text = input("请输入笔记内容:")
    with open("记事本.txt", "a", encoding="utf-8") as f:
        f.write(text + "\n")
    print("保存成功!")

def read_note():
    try:
        with open("记事本.txt", "r", encoding="utf-8") as f:
            print("===== 所有笔记 =====")
            print(f.read())
    except FileNotFoundError:
        print("暂无笔记文件,请先新增笔记!")

# 程序入口
while True:
    print("\n1.写笔记  2.查看笔记  0.退出")
    op = input("请输入操作序号:")
    if op == "1":
        write_note()
    elif op == "2":
        read_note()
    elif op == "0":
        print("程序结束")
        break

七、常见报错与解决

  1. FileNotFoundError:文件不存在,读文件前先用 w 模式创建

  2. 中文乱码:打开文件必须加上encoding="utf-8"

  3. PermissionError:文件被其他软件占用,关闭后再运行代码

  4. json 写入中文变成 unicode 编码:添加ensure_ascii=False

  5. CSV 出现空行:打开文件时添加newline=""

八、下期预告

下一篇:Python 异常捕获 try-except,处理程序报错,让代码稳定不崩溃。


评论