2020-06-11 目录:
一、with上下文处理
二、b 模式
三、+ 模式
四、文件操作的其他方法
4.1 f.readline()
4.2 f.readlines()
4.3 f.writelines()
4.4 f.flush()
一、with上下文处理
with open('a.txt', mode='rt', encoding='utf-8') as f1, # 当一行代码过长时,可以使用来换行 open('b.txt', mode='rt', encoding='utf-8') as f2: print('文件1的内容'.center(50, '#')) data = f1.read() print(data) print('文件2的内容'.center(50, '#')) data = f2.read() print(data) # 特点:自动调用f1.close()、f2.close()回收操作系统
二、b 模式
① b模式下读写都是以二进制为单位,也就是说,在b模式下写入文件的内容必须先转换成bytes类型
操作文本文件时,推荐使用t模式,因为t模式帮我们内置了编码和转码的功能,更为方便,而b模式需要手动编码、转码
② 针对如视频、音频、图片等非文本文件时,只能使用b模式 ps:基于网络传送数据时,必须要用到字符编码解码的操作,因为网络只能传输二进制数据
操作文本文件时,推荐使用t模式,因为t模式帮我们内置了编码和转码的功能,更为方便,而b模式需要手动编码、转码
② 针对如视频、音频、图片等非文本文件时,只能使用b模式 ps:基于网络传送数据时,必须要用到字符编码解码的操作,因为网络只能传输二进制数据
比如:
data为一段二进制数据,就需要使用data.decode('utf-8') 来解码才能转换成字符串
print(data.decode('utf-8'))
三、+ 模式
+t:t模式下的可读可写模式,可以省略t,默认为t模式,读写都是以字符串为单位,如:r+t, w+t, a+t
+b:b模式下的可读可写模式,读写都是以bytes为单位,如:r+t, w+t, a+t
因为+模式并没有改变r、w、a模式原有的特点,所以平时写代码很少用
四、文件操作的其他方法
4.1 f.readline()
作用:只读取一行内容
with open('a.txt', mode='r',encoding='utf-8') as f: data1 = f.readline() #每次读取一行 data2 = f.readline() print(data1, end='') # >>>aaa print(data2, end='') # >>>bbb
4.2 f.readlines()
将所有内容以line为单位转换成一个个字符串并保存在列表中(类似于使用for循环将每一行的内容append进一个空列表)
with open('a.txt', mode='r',encoding='utf-8') as f: # l = [] # for line in f: # l.append(line) list = f.readlines() # 上面的三行代码可以使用f.readlines()代替 print(list) # >>>['aaa ', 'bbistb ', '111 ', '222 ']
4.3 f.writelines()
with open('b.txt', mode='wt', encoding='utf-8') as f: lines = ["111 ", "222 ", "333 "] # for line in lines: # f.write(line) f.writelines(lines) # 上面的for循环可以使用.writelines()一行搞定
f.writelines()也可以用于字典,但是只能写入字典的key,且key必须是str类型,否则会报错
4.4 f.flush()
f.flush紧接着f.write()使用,可以使数据立刻写进硬盘方便保存和立即调用
但是很少用,因为它会使程序的I/O增加,从而影响程序的运行效率