python学习笔记——文件操作
python 文件操作¶
文件的打开和关闭¶
文件的打开 open()¶
open() 既可以表示打开一个已有的文件,也可以表示创建一个新文件
open(<文件名或路径>, <访问模式>)
- 文件路径:在windows平台下,文件路径是由反斜杠表示,如 "D:\Python\text.txt",但是python中 '\'(反斜杠)是转义字符,应该变为 'D:\\Python\\text.txt'
- 绝对路径:即从电脑根目录开始的路径
- 相对路径:打开的文件与当前程序的路径,'.'表示程序当前目录,'..'表示文件上级目录
-
访问模式:
访问模式 说明 r 只读模式。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在,返回FileNotFoundError w 覆盖写模式。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 x 创建写模式,文件不存在则创建,存在则返回FileExistsError a 追加写模式。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。(只能写,无法读) rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文 指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a+ 打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头 wb+ 以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。
文件的关闭 <变量名>.close()
变量名 即文件句柄
若忘记 close(),程序退出时文件会自动关闭
文件内容的写入¶
- <f>.write(s):向文件写入一个字符串
- <f>.writelines(lines):将 元素全为字符串的列表 lines 拼接作一行写入
- <f>.seek(offset):改变当前文件操作指针的位置, 0-文件开头,1-当前位置,2-文件结尾
要注意文件初始指针在文件头,所以直接 write() 会重写
In [33]:
f = open('test.txt', 'w', encoding='utf-8')
# 向文件写入一个字符串
f.write('初音真可爱!!!\n')
lines = ['可爱', '就是', '正义']
f.writelines(lines)
f.close()
文件内容的读取¶
要注意读取过程中文件指针会向后移动
- <f>.read(size=-1):默认读入全部内容,如果给定参数,读入前size字节长度的数据
- <f>.readline(size=-1):读入一行内容,如果给定参数,读入前size字节长度的数据
- <f>.readlines(hint=-1):读入所有行的内容,如果给定参数,读入前hint行的数据
当文件较大时,建议采用逐步遍历或逐行遍历,可以节省内存
In [34]:
# read() 函数
f = open('test.txt', 'r', encoding='utf-8')
f.seek(0)
s1 = f.read(2)
s2 = f.read()
print('我是s1:'+s1)
# 文件指针向后移动了
print('我是s2:'+s2)
f.close()
我是s1:初音 我是s2:真可爱!!! 可爱就是正义
In [27]:
# 逐步遍历
f = open('test.txt', 'r', encoding='utf-8')
f.seek(0)
s3 = f.read(5)
while s3 != "":
print(s3)
s3 = f.read(5)
f.close()
print()
# 逐行遍历
f = open('test.txt', 'r', encoding='utf-8')
for line in f:
print(line)
f.close()
初音真可爱 !!! 可 爱就是正义 初音真可爱!!! 可爱就是正义
with 在文件打开的使用¶
在文件读写时都可能会产生IOError,一旦出错就不会调用之后的 f.close() 函数,不能成功关闭文件
所以为了保证程序的正常运行,一般使用 try-except 格式,如下
In [45]:
try:
f = open("test.txt", 'r', encoding='utf8')
# 此处如果产生错误,不用 try-except 的话就不会关闭文件
except:
pass
finally:
if f:
f.close()
with open()¶
每次读写文件都按如上形式的话,过于繁琐,所以引入了 with open 语句自动调用 close() 方法 with 的作用就是自动调用close()方法
In [46]:
with open('test.txt', 'r', encoding='utf-8') as f:
print(f.read())
# 和上面是一样的效果,但是更简洁,且不需调用 close() 方法
初音真可爱!!! 可爱就是正义

浙公网安备 33010602011771号