【Python基础】文件处理

1. open(file,mode,encoding) 告诉操作系统打开文件,返回文件类型

会占用两块内存空间,一块是变量值所占的内存空间,一块是操作系统打开具体文件所占的空间

  • 参数file
    • 文件的绝对路径(从磁盘开始写)/相对路径(从当前所在文件夹作为前缀)
  • 参数mode
    • 一类是控制文件读写操作的模式
      • =r  只读文件(默认值);打开文件,文件指针默认在文件开头位置
      • =w  存在则覆盖文件内容重写;文件不存在会创建;打开文件,文件指针开始默认在文件开头位置,清空原有数据
      • =a 追加到文件末尾;文件不存在则创建;打开文件,文件指针开始默认在末尾
      • =r+ 可读写文件,以读为准(如果文件不存在,会报错)
      • =w+ 可读写文件,以写为准即打开文件,文件指针默认在开始位置,清空原有数据
      • =a+ 读写方式打开,追加到文件末尾
    • 一类是控制文件读写内容的模式即控制读写文件的格式
      • t模式(默认) 仅针对文本文件
        • 文件内容是以字符串为单位的,在python3里面字符串类型是以unicode编码的二进制存在内存的,想要保存文件需要指定编码格式进行保存
        • 作用:
          • read的时候看到该模式将从硬盘读取数据的编码二进制 自动转换为 unicode编码的二进制到内存
          • write的时候看到该模式将内存的unicode二进制数据保存为指定的编码格式
      • b模式即二进制模式  针对所有类型文件
        • 作用:
          • 如是文本文件,则针对read需要将硬盘读取到的编码二进制 解码为unicode二进制在内存展示;如是write需要将文本内容unicode编码为指定编码格式
          • 如是非文本文件,则针对read直接读取硬盘的编码二进制;write
        • 注意:此模式下不需要指定参数encoding,非文本文件读的时候根据硬盘里面编码格式取,不需要按照指定编码取 转换为unicode
    • 上述两类模式需要结合使用
  • 参数encoding
    • 告诉操作系统以何种编码方式打开文件
    • 如果是t模式,则一定要指定该参数
    • linux和mac是默认UTF-8; windows默认是GBK

2. read([n])  向操作系统发送请求:一次性读(从硬盘读取到内存)文件全部内容并返回值

  •   调用: f.read()
  •    如果在t模式下,n代表移动的字符数;如果在b模式下,n代表的是移动的字节数
  •   文件指针位置:
    • 针对r模式,从打开文件时指针位置开始读, 读取完文件内容后在末尾
    • 针对w+模式,从文件末尾读取文件内容

3. write() 向操作系统发送请求:写文件内容

  •   调用:f.write()
  •   文件指针位置: 
    • 针对w模式,从打开文件时指针位置开始写,写完文件内容后在末尾    
    • 针对r+模式,从文件末尾写入文件内容

4.writelines(iter) 对可迭代对象遍历拼接一行写入

5.close() 向操作系统发送请求:关闭文件,操作系统回收资源

6.flush() 强制操作系统立即操作,尽量不使用

------------------------------------------------------------------------------------------------

文件指针相关

7.seek(n,参照位置)  移动文件指针
  • 参数n代表字节数
  • 参数 参照位置分为0,1,2;其中1,2场景下不可应用到t模式
    • =0,则参照文件开头位置
    • =1,则参照指针当前位置
    • =2,则参照文件末尾位置
8.tell() 获取文件当前指针位置

修改文件

  • 不可直接修改硬盘数据,都是用新数据覆盖老数据
  • 修改文件的实质是修改的内存数据
    • 第1种修改文件的方式:将文件内容全部读取一起修改
      • with open(文件路径,mode='rt',encoding='utf-8') as f:
        
            res = f.read()
        
            l = list(res)
        
            l.insert(xx)
        
            new_res = ‘’.join(l)
        
        with open(文件路径2,mode='wt',encoding='utf-8') as f1:
        
            f1.write(new_res)
    • 第2种修改文件的方式:保证内存只有一行数据
      • with open(文件路径,mode=rt,encoding='utf-8') as f, open(文件路径2,mode='wt',encoding='utf-8') as f1:
         
            for line in f:
         
                res = f.readline()  # 读一行原文件内容
        
                f1.write(res)       # 写一行内容到新文件

相关推荐

  1. Python基础文件处理

    2024-06-12 15:28:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 15:28:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 15:28:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 15:28:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 15:28:03       18 阅读

热门阅读

  1. 1358 - 素数环

    2024-06-12 15:28:03       8 阅读
  2. rk3576作为2024行业新秀,那么rk3588和rk3399

    2024-06-12 15:28:03       7 阅读
  3. Hadoop之HDFS分布式文件系统

    2024-06-12 15:28:03       4 阅读
  4. DevOps的原理及应用详解(三)

    2024-06-12 15:28:03       7 阅读
  5. 【日常记录】Jackson如何支持org.joda.time.DateTime

    2024-06-12 15:28:03       8 阅读
  6. 力扣-2225

    2024-06-12 15:28:03       6 阅读
  7. Lua 基础 05 时间

    2024-06-12 15:28:03       8 阅读
  8. leetcode刷题记录38-16. 最接近的三数之和

    2024-06-12 15:28:03       6 阅读
  9. 高低温测试发现文件被篡改

    2024-06-12 15:28:03       7 阅读
  10. 架构设计-如何安全地传输密码

    2024-06-12 15:28:03       5 阅读
  11. 【名词解释】Unity中的Scrollbar组件及其使用示例

    2024-06-12 15:28:03       6 阅读
  12. 大数据的定义特点与应用场景?

    2024-06-12 15:28:03       6 阅读
  13. 网络数据库后端面试题

    2024-06-12 15:28:03       8 阅读
  14. c++:回顾(一)

    2024-06-12 15:28:03       8 阅读