一、打开文件
- 开一个文件用
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!')