菜鸟学Python第八天

菜鸟学python第八天

  • 补充内容:python 3 字符编码的内置方法

    • 变量名.encode('编码表'):Unicode二进制——>编码encode——>其他格式的二进制

    • 变量名.decode('编码表'):Unicode二进制——>解码decode——>其他格式二进制

 


 

  • 文件的基本操作

    • 什么是文件

      文件是操作系统为应用程序或用户提供一种操作硬盘的虚拟单位

      应用程序或用户对文件的读写操作其实都是向操作系统发送指令

    • 为何要用文件

      文件对应的硬盘空间,如果需要考虑永久保存数据那必须使用文件

    • 怎么用文件

      1. 打开文件

        • open(r'D:\python\day09\a.txt', mode='r', encoding=‘utf-8’)

          r:raw的意思,表示原生代码,不需要进行任何转码

      2. 读 写文件

        • f.read()

        • f.write()

      3. 关闭文件

        • f.close() :向操作系统发指令,让操作系统关闭打开的文件,回收操作系统资源。

        路径问题:

        • 绝对路径:

          • win:C:a\b\c\d.txt

          • linux:/a/b/c/d.txt

        • 相对路径:相对当前执行文件所在文件夹

    • 上下文管理

      with:有自动关闭文件的机制,可以避免打开文件而忘记关闭的情况

      with open(r'C:\Users\liusijun\Desktop\密码.txt', mode='r') as f:
          date = f.read()
          print(date)

  


 

  • 文件打开模式:rwa、bt 

    • 控制文件读写操作的模式

      1. r(默认):只读模式,以该模式打开文件,当文件不存在时:报错,当文件存在时,文件指针在文件开头。

      • f.readable():判读文件是否可读

      • f.readline():只读一行,可以一行行读文本,当文件指针读到末尾是则读出为空(for line in f:……print(line))

        with open(r'C:\Users\Jason\Desktop\py.txt', mode='rt') as f:
                for line in f:
                print(line)

        理解:文本文件中,以换行符将内容划分为多个数据,所以for循环可以进行迭代循环。

      • f.readlines():读出文件形成列表形式

      1. w:只写模式,以该模式打开文件,当文件不存在时创建一个空文档,当文件存在时清空文件内容,文件指针在文件开头。

      *在打开文件不关闭的情况下,连续的写入,新写的内容总时跟在老内容之后。

      • f.writable():判断文件是否可写

      • f.write():在文件内写入内容

      • f.writelines():

        f.write和f.writelines的区别:

        file.write(str)的参数是一个字符串,就是你要写入文件的内容.
        file.writelines(sequence)的参数是序列,比如列表,它会迭代帮你写入文件。
      1. a:只追加写模式,当文件不存在时创建文件,当文件文件存在时追加内容。(以该模式打开文件,指针直接跳到文件末尾)

    • 控制文件读写内容的模式(不能单独使用,必须与r、w、a连用)

      1. t(默认):无论读写都是以字符为单位的,只能操作文本文件,必须指定encoding参数。

      2. b:无论读写都是bytes为单位的,可以操作所有文件,一定不能指定encoding参数。

    了解:

    +:不能单独使用:必须与rwa连用,r+、w+、a+

  


 

  • 文件修改的两种方式

    • 方式一:

      1. 以读的方式打开源文件

      2. 将文件内容一次性读入内存,在内存完成修改

      3. 以写的方式打开源文件,然后将修改后的结果一次性屑放入源文件

        优点:在文件修改过程中,硬盘只存在一份数据

        缺点:浪费内存

      with open('b.txt',mode='rt',encoding='utf-8') as f1:
          msg=f1.read()
          new_msg=msg.replace('alex','大SB')
      ​
      ​
      with open('b.txt',mode='wt',encoding='utf-8') as f2:
          f2.write(new_msg)
    • 方式二:

      1. 以读的方式打开源文件,以写的方式打开一个临时文件

      2. 读取源文件的一行内容到内存中,将修改的结果写入临时文件,循环执行。

      3. 删除源文件,将临时文件重命名为原文件名。

        优点:同一时间内在内存中只有文件的一行内容,更节省空间

        缺点:在文件修改的过程中硬盘只存在两分数据

      import os
      ​
      with open('b.txt',mode='rt',encoding='utf-8') as read_f,\
          open('.b.txt.swap',mode='wt',encoding='utf-8') as write_f:
          for line in read_f:
              write_f.write(line.replace('大SB','alex'))
      ​
      ​
      os.remove('b.txt')
      os.rename('.b.txt.swap','b.txt')

猜你喜欢

转载自www.cnblogs.com/liusijun113/p/10024051.html