第 06 章 文件与数据格式化
学习目标
- 打开、读取、写入并关闭文本文件。
- 区分一维数据和二维数据。
- 使用分隔符和 CSV 格式保存数据。
- 处理文件不存在等常见异常。
1. 文件的打开和关闭
file = open("score.txt", "w", encoding="utf-8")
file.write("姓名,成绩\n")
file.write("李明,92\n")
file.close()
常用模式:
r:只读,文件不存在时出错。w:覆盖写入,文件不存在时创建。a:在末尾追加。b:二进制模式,可与上述模式组合。
文本文件按字符处理,图像、音频和视频通常按二进制文件处理。处理结束后必须关闭文件。with 可以自动关闭:
with open("score.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
2. 三种读取方式
file = open("score.txt", "r", encoding="utf-8")
print(file.read())
file.close()
read():读取全部内容。readline():读取一行。readlines():读取全部行并形成列表。
文件没有 readall() 或 readtext() 方法。
3. 一维数据
一维数据可以用列表表示,并使用分隔符保存:
scores = ["88", "92", "76"]
file = open("scores.txt", "w", encoding="utf-8")
file.write(",".join(scores))
file.close()
file = open("scores.txt", "r", encoding="utf-8")
data = file.read().split(",")
file.close()
print(data)
4. 二维数据和 CSV
二维数据可以看成表格。CSV 用逗号分隔每一列:
rows = [
["姓名", "语文", "数学"],
["李明", "88", "92"],
["王宁", "91", "85"]
]
file = open("students.csv", "w", encoding="utf-8")
for row in rows:
file.write(",".join(row) + "\n")
file.close()
读回后可以拆分每列:
file = open("students.csv", "r", encoding="utf-8")
for line in file:
print(line.strip().split(","))
file.close()
5. 安全读写
try:
file = open("students.csv", "r", encoding="utf-8")
data = file.readlines()
file.close()
except FileNotFoundError:
print("文件不存在")
操作题通常会给出指定文件名。程序应读写题目指定的文件,不能随意改名。
本章练习
- 把三个姓名写入
names.txt,每行一个姓名。 - 读取该文件并输出第 2 行。
- 把成绩列表用逗号连接后写入文件。
- 读取 CSV 文件,输出第 1 行中的第 2 列。
本章小结
r、w、a分别表示读取、覆盖和追加。- 读取完成后要关闭文件,或使用
with自动关闭。 - 一维数据可用列表和分隔符处理,二维数据适合 CSV 表格。
- 文件名、编码和分隔符都必须与题目要求一致。