Python文件操作

七、文件操作

7.1 文件打开和关闭

  1. 打开文件open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

    • file:文件路径

    • mode:文件打开模式

      • 文本模式
        • 'r':只读模式(默认),文件必须存在。
        • 'w':写入模式,若文件存在则清空内容,若不存在则创建。
        • 'a':追加模式,若文件存在则写入到文件末尾,若不存在则创建。
        • 'r+':读写模式,文件必须存在。
        • 'w+':写入和读模式,文件存在会清空内容,若不存在则创建。
        • 'a+':追加和读模式,文件存在时从末尾写入,若不存在则创建。
      • 二进制模式:在文本模式后加 'b',用于处理非文本文件(如图像、视频)。
    • buffering:控制文件的缓冲策略

      • 0:无缓冲,仅适用于二进制模式

      • 1:行缓冲,文本模式

      • >1:设定具体的缓冲区大小,以字节为单位

    • encoding:指定字符编码,例如encoding='utf-8'

    • errors:错误处理,在遇到无法解码的字符时的处理方式

  2. 关闭文件file.close()

7.2 上下文管理器操作

  1. 推荐使用 with 语句管理文件,这样会自动关闭文件。

  2.  with open('example.txt', 'r') as file:
         content = file.read()
         print(content)
     # 文件会自动关闭
    

7.3 文件读取

  1. read():不加参数,则读取文件的所有内容,加数字,代表读取的字符数目。

  2. readline():每次读取一行内容

    with open('example.txt', 'r') as file:
        line = file.readline()  # 读取第一行
        while line:
            print(line, end='')  # 打印每行内容
            line = file.readline()  # 继续读取下一行
    
  3. readlines():一次性读取所有行,并将其存储在列表中。

  4. Python 文件对象本身是一个迭代器,可以直接用于 for 循环逐行读取:

    with open('example.txt', 'r') as file:
        for line in file:
            print(line, end='')  # 每次循环读取一行
    

7.4 文件写入

  1. write():将字符串内容写入文件
  2. writelines():将一个字符串列表写入文件
  3. 文件写入的缓冲:Python 会在文件写入时自动进行缓冲,写入的数据先存储在内存缓冲区,等缓冲区满后再写入磁盘。可以通过 flush() 方法将缓冲区数据立即写入文件
  4. print()print("Hello, World!", file=file)

7.5 文件定位和读取控制

  1. 文件指针:文件指针(File Pointer)是指当前文件操作的位置。每次文件读取或写入时,文件指针会移动,指向文件中的下一个操作位置。
  2. tell():返回当前文件指针的位置,以字节为单位。
  3. seek(offset, whence):移动文件指针
    • offset:偏移量,以字节为单位
    • whence:参考位置,0表示文件开头,1表示当前位置,2表示文件末尾

7.6 文件常见操作

  1. 文件是否存在os.path.exists("文件路径"),返回True表示存在。
  2. 文件是否是普通文件:os.path.isfile("example.txt")
  3. 文件是否是目录:os.path.isdir("example.txt")
  4. 获取文件大小:os.path.getsize("example.txt"),以字节为单位
  5. 创建目录:os.mkdir("new_folder")
  6. 删除文件或目录:os.remove("example.txt")
  7. 重命名或移动文件:os.rename("old_name.txt", "new_name.txt")
  8. 列出目录中的文件和子目录:files = os.listdir("some_directory")
    • 返回一个列表,没有区分文件还是目录
  9. 获取文件的元信息info = os.stat("example.txt")
    • st_size:文件的字节大小。
    • st_nlink:硬链接数量。
    • st_uid:文件所有者的用户 ID。
    • st_gid:文件所属组的组 ID。
  10. 复制文件:shutil.copy("source.txt", "destination.txt")
  11. 复制目录:shutil.copytree("source_folder", "destination_folder")
    • 递归复制目录内的文件
  12. 文件路径操作
    • 获取文件名:os.path.basename(file_path)
    • 获取目录路径:os.path.dirname(file_path)
    • 拼接路径:os.path.join("folder", "file.txt"),结果是folder/file.txt
posted @ 2024-11-15 15:32  ouyangxx  阅读(6)  评论(0编辑  收藏  举报