python 文件的基本操作

Posted amwkvi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 文件的基本操作相关的知识,希望对你有一定的参考价值。

文件的基本操作

操作系统默认编码

  • windows:gbk

  • linux:utf-8

  • Mac-OS:utf-8

  1. 打开文件

    • f1 = open(‘read.txt‘, encoding=‘utf-8‘,mode=‘r‘)
      

      f1变量称为文件操作句柄,通常以f1、file_handler、f_h等约定俗成形式存在。

      打开文件默认模式为‘r‘,省略mode参数以只读的形式打开该文件。

    • 文件打开之后必须要关闭:f1.close()。

  2. 文件的读:常用读模式 r,rb,r+,r+b……

    • 读取文件模式‘r‘,mode=‘r‘,用于读取文本文件。

      • f1.read():整个文件全部一次性读出来。返回值是一个字符串。

      • f1.readline():按照一行一行读取。带有指针特性,下一次读取会接着上一行后开始读取。

      • f1.readlines():多行读取,返回一个列表,每个元素是文件中的一行。

      • ★★★ for:以遍历文件句柄的方式循环读取全部文件内容,表现形式等于readlines()方法返回的列表。但有很大的不同,在读取大型巨型文件时候,read()和readlines()方法会直接将整个文件读取进电脑内存,这将会导致内存不足;而for循环读取大型文件时,单次循环时间内只有文件内的一行内容占用内存,进入下个循环即释放上一行内容。
        f1 = open(‘文件的操作练习.txt‘, mode=‘r‘, encoding=‘utf-8‘)
        for line in f1:
          print(line, end=‘‘)
        f1.close()
        
    • 读取文件模式‘rb‘,mode=‘rb‘,用于读取非文本文件。

      • 使用方法与‘r‘模式一样,

        f1=open(‘1寸照片.jpg‘,mode=‘rb‘)  # 不需要加编码模式
        print(f1.read())
        f1.close()
        
  3. 文件的写:常用写模式 w,wb,w+,w+b

    • w写模式:mode=‘w‘,用于写入本文文件。

      • f1.write()方法:没有文件时候创建一个文件,如果文件存在就”先清空再写入“内容。

        w模式下,只有打开文件的时候清空一次,如果打开文件之后进行多次写入,将以指针位置后开始写入,并不会每次写入都清空文件内容。
        f1 = open(‘文件的写练习.txt‘, mode=‘w‘, encoding=‘utf-8‘)
        f1.write(‘三好学生就是我‘)
        f1.close()
        
    • wb写模式:mode=‘wb‘,用于写入非文本文件。

      • 可以使用rb形式读取非文本文件,用wb写入到一个新文件里。

        f1 = open(‘cat.jpg‘, mode=‘rb‘)
        photo=f1.read()
        f1.close()
        
        f2=open(‘cat1.jpg‘,mode=‘wb‘)
        f2.write(photo)
        f2.close()
        
  4. 文件的追加:常用模式 a,ab,a+,a+b

    • a 追加模式:mode=‘a‘,用于追加写入文本文件。

      如果指定文件不存在,则先创建文件;如果指定文件已经存在,则直接追加内容。

      每次追加并不会自动换行,需要手工添加换行符‘ ‘

      f1=open(‘文件的追加‘,mode=‘a‘,encoding=‘utf-8‘)
      f1.write(‘情景剧剧本《爱的守护》‘)
      f1.close()
      
  5. 文件操作的其他模式:r+,w+

    • r+ 模式:读写,先读后追加。

      该操作对象需要已经存在,不存在指定文件将报错。
      写操作时,是在文件指针位置开始写入,并不是清空再写。
      操作文件指针方法:f1.seek(),指定文件指针所在位置。
      f1=open(‘文件的追加‘,mode=‘r+‘,encoding=‘utf-8‘)
      print(f1.read())
      f1.write(‘
      文件的读写操作‘)
      print(f1.read())
      f1.close()
      
  6. 文件操作的其他功能:

    • 对文件句柄的常用操作:read()、read(n)、readline()、readlines()、write……
    • 获取当前文件操作句柄的指针的位置:f1.tell(),返回值是以字节为单位计算的整数。
    • 调整当前文件操作句柄的指针位置:f1.seek(),括号中填写整数,以字节为单位计算。
    • 强制刷新文件:f1.flush(),将缓存中的数据立刻写入文件,同时清空缓存,一般用于close()方法之前,作用为关闭文件前将缓存写入文件。
  7. 打开文件的另一种方式:

    • with open()方法:

      • 优点一:不用手动关闭文件句柄,它会在结束操作之后的一定时间内关闭。

      • 优点二:一个with可以打开多个文件进行操作

        # 太长语句换行可以直接使用‘‘符号,解释器在一个语句里遇到这个符号就会知道这行没有结束。
        with open(‘文件的追加‘,mode=‘r‘,encoding=‘utf-8‘) as f1,        open(‘文件的操作练习.txt‘,encoding=‘utf-8‘) as f2:
            print(f1.read())
            print(f2.name)
        
  8. 文件的修改操作:

    • 文件修改的标准步骤:

      1. 以读的模式打开原文件。
      2. 以写的模式创建一个新文件。
      3. 将原文件的内容读出来修改成新内容,写入新文件。
      4. 将原文件删除。
      5. 将新文件重命成原文件。
        • 一次性读取到内存,进行替换内容修改:
        import os
        with open(‘文件的操作练习.txt‘,encoding=‘utf-8‘) as f1,    open(‘文件的操作练习.bak‘,mode=‘w‘,encoding=‘utf-8‘) as f2:
            old_file=f1.read()
            new_file=old_file.replace(‘Mr.H‘,‘H.X‘)
            f2.write(new_file)
        os.remove(‘文件的操作练习.txt‘)
        os.rename(‘文件的操作练习.bak‘,‘文件的操作练习.txt‘)
        
        • 使用for循环读取文件内容进行修改:
        with open(‘文件的操作练习.txt‘,encoding=‘utf-8‘) as f1,    open(‘文件的操作练习.bak‘,mode=‘w‘,encoding=‘utf-8‘) as f2:
            for line in f1:
                new_line=line.replace(‘amwkvi‘,‘Mr.H‘)
                f2.write(new_line)
        os.remove(‘文件的操作练习.txt‘)
        os.rename(‘文件的操作练习.bak‘,‘文件的操作练习.txt‘)
        

以上是关于python 文件的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

使用 Python 代码片段编写 LaTeX 文档

学习笔记:python3,代码片段(2017)

Python的基本库与第三方库

VSCode 如何操作用户自定义代码片段(快捷键)

VSCode自定义代码片段——git命令操作一个完整流程