• Python文件操作


    菜鸟学python第八天

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

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

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

     


     

    • 文件的基本操作

      • 什么是文件

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

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

      • 为何要用文件

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

      • 怎么用文件

        1. 打开文件

          • open(r'D:pythonday09a.txt', mode='r', encoding=‘utf-8’)

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

        2. 读 写文件

          • f.read()

          • f.write()

        3. 关闭文件

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

          路径问题:

          • 绝对路径:

            • win:C:acd.txt

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

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

      • 上下文管理

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

        with open(r'C:UsersliusijunDesktop密码.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:UsersJasonDesktoppy.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')
    人生如逆旅,我亦是行人.....
  • 相关阅读:
    就为了一个原子操作,其他CPU核心罢工了
    浅谈JVM和垃圾回收
    简单了解一下K8S,并搭建自己的集群
    WebAssembly完全入门——了解wasm的前世今身
    【简单了解系列】从基础的使用来深挖HashMap
    【俗话说】换个角度理解TCP的三次握手和四次挥手
    两分钟让你明白Go中如何继承
    游戏服务器和Web服务器的区别
    Go中使用seed得到相同随机数的问题
    从web到游戏,走出舒适区
  • 原文地址:https://www.cnblogs.com/liusijun113/p/10024051.html
Copyright © 2020-2023  润新知