python开发学习day09 (with上下文处理; b模式; +模式; 文件操作)

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:基于网络传送数据时,必须要用到字符编码解码的操作,因为网络只能传输二进制数据
比如:
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增加,从而影响程序的运行效率
原文地址:https://www.cnblogs.com/cui-cheng/p/13095513.html