读文件:
python打开一个文件用open()方法,open()返回的是一个文件对象:
f=open('test.txt','r') #r表示是文本文件,rb是二进制文件
如果文件不存在,open()函数会抛出一个IOError错误。
文件使用open()打开时候,必须关闭,因为文件会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。
f.close()
可以采用with语句来自动调用close()方法:
with open('path/to/file','r') as f:
print(f.read()) #使用with.open方法打开文件后会自动关闭
python提供了三个“读方法”:read()、readline()和readlines()。
- read()每次读取整个文件并将文件内容放到一个字符串变量中,可以采用read(size)方法,每次读取size个字节的内容。
- readline()每次读取一行。
- readlines()一次读取所有内容并按行返回list,该列表可以由python的for...in...结构进行处理。
这三种方法把每行末尾的‘\n’读进来,采用下述方法将\n去掉:
with open('test.txt','r') as f:
lst=f.readlines()
for i in range(0,len(lst)):
lst[i]=lst[i].restrip('\n') #将末尾的\n去掉
写文件:
写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符‘w’或者‘wb’表示写文本文件或写二进制文件:
使用write来写入文件时,务必调用f.close()来关闭文件,所以还是使用with语句来得保险:
with open('test.txt','w') as f: # w模式是这样:如果没有这个文件就创建一个,如果有会先把原文件清
空再写入新的东西,如果不想清空原内容,使用'a'这个模式
f.write('hello,world!')
python提供了'write'和'writelines'方法:
- write()方法和read()、readline()方法对应,是将字符串写入到文件中。
- writelines()方法和readlines()方法对应,是针对列表的操作,他接受一个字符串列表作为参数,将他们写入到文件中,换行符不会自动加入,因此,需要显式的加入换行符。
f=open('test1.txt','w')
f1.writelines(["1","2","3"])
# 此时test1.txt的内容为:123
f=open('test1.txt','w')
f1.writelines(["1\n","2\n","3\n"])
# 此时test.txt的内容为:
# 1
# 2
# 3
open()的mode参数:
'r':读
'w':写
'a':追加
'r+'==r+w:可读可写,文件不存在报错
'w+'==w+r:可写可读,文件不存在就创建
'a+'==a+r:可追加可写,文件不存在就创建
'rU'或者'Ua'以读方式打开,同时提供通用换行符支持