Python3 File
Python3 学习笔记 · 整理自菜鸟教程
一句话
用内置的 open() 打开文件得到文件对象,再用 read/write 等方法和 with 上下文管理读写文件,用完自动关闭。
要点
open(file, mode, encoding)返回文件对象;路径支持相对/绝对。- 模式:
r读、w写(清空)、a追加、x独占创建、+读写、b二进制。 - 文本模式默认按系统编码,中文读写显式指定
encoding="utf-8"最稳。 - 推荐
with open(...) as f:,离开块自动关闭,异常也不泄漏。 read()读全部,readline()读一行,readlines()读成列表,for line in f逐行最省内存。- 文件对象可迭代,逐行处理大文件不会一次性载入内存。
- 写文件后需
flush()或关闭才落盘;with退出即关闭。 seek(offset, whence)移动指针,tell()看当前位置,二进制模式常用。
语法 / 常用方法
| 方法/参数 | 说明 | 示例 |
|---|---|---|
open(file, mode) |
打开文件 | open("a.txt", "r") |
f.read(size=-1) |
读全部或指定字节 | f.read() |
f.readline() |
读一行(含换行符) | f.readline() |
f.readlines() |
读所有行成列表 | f.readlines() |
for line in f |
逐行迭代,省内存 | for line in f: |
f.write(s) |
写入字符串,返回字符数 | f.write("hi\n") |
f.writelines(seq) |
写入字符串序列 | f.writelines(["a\n","b\n"]) |
f.flush() |
立即刷新缓冲到磁盘 | f.flush() |
f.close() |
关闭文件 | f.close() |
f.seek(offset, whence) |
移动读写指针 | f.seek(0) |
f.tell() |
返回当前指针位置 | f.tell() |
f.closed |
是否已关闭 | f.closed |
代码示例
1 | |
易错点
- 用
w模式打开会立刻清空原文件,只想读别写错模式。 - 文本模式写二进制(图片等)会报错,二进制用
"rb"/"wb"。 - 中文乱码多半是编码不一致,读写都指定
encoding="utf-8"。 readline()保留末尾\n,比较字符串前先strip()。- 忘记关闭文件会占用句柄/丢缓冲数据,优先用
with。 - 文件不存在时
r模式抛FileNotFoundError,可先判断或用x/a。 read()读大文件会吃光内存,大文件用逐行迭代。- 文本模式下
seek只能从文件开头或tell()返回值移,随意偏移可能出错。