一、前言
前面写的所有代码数据都只存在内存里,程序关闭数据就全部消失。本篇学习 Python 文件读写,把文字、数据永久保存到本地文件,覆盖日常最常用的三种文件:纯文本 TXT、结构化 JSON、表格 CSV。
二、文件打开基础:open () 函数
1. open 基础语法
python
运行
# open(文件路径, 打开模式, 编码格式)
f = open("test.txt", "r", encoding="utf-8")
f.close() # 用完必须关闭文件,释放资源
2. 常用打开模式
表格
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
七、常见报错与解决
FileNotFoundError:文件不存在,读文件前先用 w 模式创建中文乱码:打开文件必须加上
encoding="utf-8"PermissionError:文件被其他软件占用,关闭后再运行代码json 写入中文变成 unicode 编码:添加
ensure_ascii=FalseCSV 出现空行:打开文件时添加
newline=""
八、下期预告
下一篇:Python 异常捕获 try-except,处理程序报错,让代码稳定不崩溃。