zoukankan      html  css  js  c++  java
  • 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增加,从而影响程序的运行效率
  • 相关阅读:
    为什么java设置了xmx后,进程的占用内存会超过设置
    Linux下设置tomcat的内存大小
    CentOS7安装mysql8
    快捷键
    nginx日志配置
    使用loadNibNamed加载xib后,程序crash
    atom安装power-mode插件让编辑器开启震动模式
    Mockito (四)
    Mockito (三)
    Mockito (二)
  • 原文地址:https://www.cnblogs.com/cui-cheng/p/13095513.html
Copyright © 2011-2022 走看看