python文件读取一共有如下几种模式:
'r' | 读模式 |
'w' | 写模式 |
'a' | 追加模式 |
'b' | 二进制模式(可添加到其他模式中使用) |
'+' | 读或者写模式(可添加到其他模式中使用) |
读文件:
read()方法:一次读取文件所有内容。
a.txt文件内容如下:
hello,world!
实例代码:f=open("a.txt",'r')
a=f.read()
f.close()
print(a)
输出:hello,world!
read(3):如果指定参数,例如read(3),那么只读取文件内容的前3个字符。f=open("a.txt",'r')
a=f.read(3)
f.close()
print(a)
输出:hel
readline()方法:一次读取文件内容的一行,换行符
也包括。a.txt内容如下:
2012
2013
2014
实例代码:
f=open("a.txt",'r')
a=f.readline()
b=f.readline()
f.close()
print(a,len(a))
print(b,len(b))
输出:
('2012
', 5)
('2013
', 5)
readlines()方法:一次读取文件中的所有行,并且把读取的内容作为列表返回f=open("a.txt",'r')
a=f.readlines()
f.close()
print(a)
输出:['2012
', '2013
', '2014']
readlines方法和read虽然都是读取全部文件内容,但是还是有区别的,readlines方法会把文件内容的每一行作为列表的一个元素返回由整个文件内容组成的列表。写文件:
write()方法:write方法的参数就是要写入的内容
f=open("a.txt",'w')
f.write("2017")
f.close()
如果当前目录没有a.txt文件,系统会自动在当前目录创建一个a.txt,不会报错,(但是如果是读模式的话,要读的文件必须存在,否则报错)。如果原来a.txt里面有文件内容,那么写入的内容会把原来的内容覆盖掉,本例中,程序运行后,a.txt文件内容为2017。如果不想覆盖原来文件的内容,只是在文件内容尾部追加,那么只需要把模式'w'换成'a',就可以了。writelines()方法:writelines()方法和readlines()方法相反,传给它一个字符串列表,它会把所有的字符串写入文件。但是程序不会自己添加新的行,需要自己手动添加。(注意:没有writeline方法)
f=open("a.txt",'w')
f.writelines(['2017
','2018
','2019'])
f.close()
运行上面代码后,a.txt的文件内容为:2017
2018
2019
例如:
try:
f=open("a.txt",'w')
f.writelines(['2017
','2018
','2019'])
finally:
f.close()
这样写的话,文件在任何情况下肯定会被关闭的。但是这样写有些麻烦,在python2.5之后的版本中,我们可以使用with....as....结构,例如:with open("a.txt",'w') as f:
f.writelines(['2017
', '2018
', '2019'])
这样我们连close()都不用写了,是不是更方便!