读文件
定义:通过操作系统定义的接口,从这个文件对象中读取数据。
步骤:只读方式打开文件,读取文件,关闭文件。
示例:
f=open('E:\\book\\test.txt','r') #open函数打开一个文件,第一个参数文件名,第二个参数指打开方式,r表示只读
print(f.read()) #read读取所有内容,并返回一个字符串
f.close() #关闭文件
补充:
1:open函数,r表示读取,rb表示读取二进制文件,非utf-8编码的文本文件,需要传入encoding参数。遇到非法编码字符,UnicodeDecodeError异常时,可以添加error='ignore',忽略。
2:read方法,读取全部数据。当文件过大时,会占用内存,所以,还有其他的读取方式:
read(size) 最多读取size个字节的内容
readline 每次读取一行
readlines 一次性读取所有内容,按行返回列表
3:每次都必须close么?是的,没错,你说的对。
但是!提供两种不用自己每次close的方法:
第一种:try…finally…语句
try:
f=open('E:\\book\\test.txt','r')
print(f.read())
finally: #开始执行finally
if f: #如果f还存在
f.close() #关闭f对象
第二种:with语句
with open('E:\\book\\test.txt','r') as f: #打开一个文件,并作为对象f
print(f.read()) #with语句结束,自动关闭对象
写文件
定义:通过操作系统定义的接口,往这个文件对象中写入数据。
相较于读文件的相同点:
都需要open函数打开,执行完都需要关闭文件对象。都可以利用finally和with关闭文件对象。
相较于读文件的不同点:
1:open参数,写入文本文件为w,写入二进制文件为wb。w模式,会覆盖原有内容,追加时,建议用a模式。
open函数的合法mode有:r、rb、r+、rb+、w、wb、w+、wb+、a、ab、a+、ab+
2:要写入特定编码的文本文件,请给open()
函数传入encoding
参数,将字符串自动转换成指定编码。
示例:
f=open('E:\\book\\test.txt','a')
f.write('write file a+')
f.close()