文件(file)用于长期保存数据。程序运行结束后,内存(memory)中的变量会消失,但写入文件的数据可以保留下来。文件 I/O(input/output)就是“从文件输入数据”和“向文件输出数据”。
💾 文件 持久保存的文本 ⇄ 🐍 Python 程序 读取输入、处理、写出结果
open() 与文件模式
open() 返回文件对象,读取、写入和关闭都通过它完成。
file = open("text.txt", "r", encoding="UTF-8")
content = file.read()
file.close()| Mode | 含义 |
|---|---|
r | 只读;文件必须存在 |
w | 写入;覆盖已有内容 |
a | 追加到文件末尾 |
r+ | 读写;文件必须存在 |
更推荐使用 with open(...) as file,代码块结束后文件会自动关闭。文本文件还应明确写出 encoding="UTF-8",减少不同系统默认编码造成的乱码。
with open("text.txt", "r", encoding="UTF-8") as file:
content = file.read()知识测验
题目
with open(...) as file 的主要好处是什么?
读取方法
read():读取全部内容,返回一个字符串。readline():读取一行,返回字符串。readlines():读取所有行,返回字符串列表。- 直接遍历文件对象:一次处理一行,适合较大的文件。
知识测验
题目
readlines() 通常返回什么?
解析单词
下面程序读取 quotes.txt,去掉英文标点,并把每个单词写入 words.txt。两个 with 可以写成同一个上下文,也可以嵌套。
import string
with open("words.txt", "w", encoding="UTF-8") as output_file:
with open("quotes.txt", "r", encoding="UTF-8") as input_file:
for line in input_file:
for word in line.split():
word = word.strip(string.punctuation)
output_file.write(word + "\n")知识测验
题目
哪条语句会把 word 写入文件并在后面换行?
动手练习
写入并读取学习日志
- 用 w 模式创建 study_log.txt。
- 逐行写入三条指定笔记:“学会 open”“理解 with”“会逐行读取”。
- 重新用 r 模式打开。
- 使用 enumerate(..., start=1) 按“1: 内容”格式打印。
动手练习
把引语拆成单词文件
- 程序先创建 quotes.txt,写入两行英文引语。
- 重新读取每一行,用 split() 拆词。
- 使用 string.punctuation 去掉标点。
- 把每个非空单词逐行写入 words.txt。