Python 基础 - 第十二节
📋 本节要点
| 知识点 | 说明 |
|---|---|
open() |
打开文件 |
r |
只读模式 |
w |
写入模式(覆盖) |
a |
追加模式 |
b |
二进制模式 |
read() |
读取全部内容 |
readline() |
读取一行 |
readlines() |
读取所有行 |
write() |
写入文件 |
with |
自动关闭文件 |
1. 文件操作概述
文件操作允许程序读取或写入文件,实现数据的持久化存储。
1.1 基本流程
# 1. 打开文件
f = open("文件名", "模式")
# 2. 操作文件(读/写)
# 3. 关闭文件
f.close()
2. 文件打开模式
| 模式 | 说明 | 文件不存在 |
|---|---|---|
r |
只读模式 | 报错 |
w |
写入模式(覆盖) | 创建新文件 |
a |
追加模式 | 创建新文件 |
r+ |
读写模式 | 报错 |
w+ |
读写模式(覆盖) | 创建新文件 |
a+ |
读写追加模式 | 创建新文件 |
rb |
二进制只读 | 报错 |
wb |
二进制写入 | 创建新文件 |
3. 读取文件
3.1 read() - 读取全部内容
f = open("test.txt", "r", encoding="utf-8")
content = f.read()
print(content)
f.close()
注意:建议指定
encoding="utf-8"避免编码问题。
3.2 readline() - 读取一行
f = open("test.txt", "r", encoding="utf-8")
line1 = f.readline()
line2 = f.readline()
print("第一行:", line1)
print("第二行:", line2)
f.close()
3.3 readlines() - 读取所有行
f = open("test.txt", "r", encoding="utf-8")
lines = f.readlines()
for i, line in enumerate(lines):
print(f"第{i+1}行:", line, end="")
f.close()
4. 写入文件
4.1 write() - 写入内容
f = open("output.txt", "w", encoding="utf-8")
f.write("第一行内容\n")
f.write("第二行内容")
f.close()
print("写入完成!")
注意:
\n表示换行,需要手动添加。
4.2 writelines() - 写入多行
f = open("output.txt", "w", encoding="utf-8")
lines = ["第一行内容\n", "第二行内容\n", "第三行内容"]
f.writelines(lines)
f.close()
4.3 追加模式 a
f = open("output.txt", "a", encoding="utf-8")
f.write("\n这是追加的内容")
f.close()
5. with 语句(上下文管理器)
使用 with 语句可以自动关闭文件,即使发生异常也会正确关闭。
# 基本语法
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 文件自动关闭,不需要手动 f.close()
推荐写法:
# 读取文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 写入文件
with open("output.txt", "w", encoding="utf-8") as f:
f.write("写入内容")
6. 实战案例:文件复制
# 复制文件内容
def copy_file(source, target):
with open(source, "r", encoding="utf-8") as f:
content = f.read()
with open(target, "w", encoding="utf-8") as f:
f.write(content)
print(f"已将 {source} 复制到 {target}")
# 测试
copy_file("test.txt", "test_copy.txt")
7. 实战案例:读取多行并统计
with open("test.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(f"总行数:{len(lines)}")
print("内容预览:")
for i, line in enumerate(lines[:5]):
print(f" {i+1}: {line}", end="")
下一节预告:赋值运算符与数值运算
评论区
0 条暂时还没有评论,欢迎来抢沙发。