一、打开文件
- 开一个文件用
open()
方法,返回一个文件对象,它是可迭代的。 - 一般情况下,我们使用
open()
方法,只需要传入文件名
和打开方式
即可。 - 如果打开的文件编码方式不是
'utf-8'
,比如是'gbk'
,我们也可以传入encoding='gbk'
参数。
f = open('test.txt', 'r', encoding='utf-8')
打开文件并且读写完成之后,我们记得一定要使用
f.close()
关闭。如果我们使用with open('/path/to/file', 'r') as f:
语法来打开,则不需要额外关闭文件,下面的读取和写入文件都采用这种语法。open()
方法的打开方式
参数
参数 | 参数说明 |
---|---|
r |
读 |
w |
写 |
a |
追加 |
r+ |
可读可写,文件若不存在就报错(IOError) |
r+w |
同上 |
w+ |
可读可写,文件若不存在就创建 |
w+r |
同上 |
a+ |
可追加可写,文件若不存在就创建 |
a+r |
同上 |
- 备注:对应的,如果是二进制文件,就都加一个b就好了:
rb
、wb
、ab
、rb+
、wb+
、wb+
二、读取文件
- python文件对象提供了三个“读”方法:
read()
、readline()
和readlines()
。每种方法可以接受一个变量以限制每次读取的数据量。-
read()
每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)
方法,每次最多读取size个字节的内容。 -
readlines()
之间的差异是后者一次读取整个文件,像read()
一样。readlines()
自动将文件内容分析成一个行的列表,该列表可以由 Python 的for ... in ...
结构进行处理。 -
readline()
每次只读取一行,通常比readlines()
慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用readline()
。
-
with open('test1.txt', 'r') as f:
list = f.read()
二、写入文件
- 写文件和读文件是一样的,唯一区别是调用
open()
函数时,传入标识符'w'
或者'wb'
表示写文本文件或写二进制文件 - 在写入文件的时候,如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。所以若不想清空原来的内容而是直接在后面追加新的内容,就用
'a'
这个模式。 - python文件对象提供了两个“写”方法:
write()
和writelines()
-
write()
方法和read()
、readline()
方法对应,是将字符串写入到文件中。 -
writelines()
方法和readlines()
方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。
-
with open('test.txt', 'w') as f:
f.write('Hello, world!')