Python-文件操作

文件操作

打开文件

  • open(file, mode='r', encoding=None, errors=None)

    1. file: 表示要打开的文件, 可以是字符串或整数.
    2. mode: 设置文件打开模式. 可以进行组合(如mode='rt', 只读文本文件).
    3. encoding: 指定打开文件时的文件编码, 默认是UTF-8, 主要用于打开文本文件.
    4. errors: 指定在文本文件发生编码错误时如何处理. errors="ignore", 表示忽略错误,程序继续执行.
    f = open('test.txt', 'w')
    write("Hello")
    print("1. 创建文件, 写入Hello")
    
    f = open('test.txt', 'a')
    f.write(" World")
    print("2. 追加 World")
    
    文件打开模式 说明
    mode='t' 文本文件模式.
    mode='b' 二进制文件模式.
    mode='r' 只读模式.
    mode='w' 只写模式,不能读内容. 如果文件不存在, 则创建文件; 如果文件存在, 则覆盖文件的内容.
    mode='x' 独占创建模式. 如果文件不存在, 则创建并以写入模式打开; 如果文件存在, 则引发FileExistsError异常.
    mode='a' 追加模式, 不能读内容. 如果文件不存在, 则创建文件; 如果文件存在, 则在文件末尾追加.
    mode='+' 更新(读写)模式, 必须与r, w或a组合使用, 才能设置文件为读写模式.

关闭文件

  • close(): 在打开文件后, 如果不再使用该文件, 则需将其关闭.

    f_name = "test.txt"
    f = None
    try:
        f = open(f_name, 'r')
        print("打开文件成功. ")
        content = f.read()
        print(content)
    except FileNotFoundError:
        print("文件不存在! ")
    except OSError:
        print("处理OSError异常")
    finally:
        if f is not None:
            f.close()
            print("文件已关闭. ")
    
  • with as代码块: 在as后面声明一个资源变量, 代码块结束后自动释放资源.

    f_name = "test.txt"
    with open(f_name, 'r') as f:
        content = f.read()
        print(content)
    

读写文本文件

  • read(size=-1): 从文件中读取字符串. size限制读取的字符数, 默认没有限制.

  • readline(size=-1): 在读取到换行符或文件尾时返回单行字符串. 如果已经到文件尾, 则返回一个空字符串.

  • readlines(): 读取文件数据到一个字符串列表中, 每一行数据都是列表的一个元素.

  • write(s): 将字符串s写入文件, 并返回写入的字符数.

  • writelines(lines): 向文件中写入一个字符串列表. 不添加行分隔符, 因此通常为每一个末尾都提供行分隔符,

  • flush(): 刷新写缓冲区, 在文件没有关闭的情况下将数据写入文件中.

    f_name = r"test.txt"
    with open(f_name, 'r', encoding='gbk') as f:
        lines = f.readlines()
        print("读取成功: ")
        print(lines)
        copy_name = r"copy.txt"
        with open(copy_name, 'w', encoding='utf-8') as c:
            c.writelines(lines)
            print("写入成功")
    # 读取成功: 
    # ['Hello. \n', 'My name is Khru. \n', 'Nice to meet you! \n', '浣犲ソ. ']
    # 写入成功
    

读写二进制文件

f_name = "screen.png"

with open(f_name, 'rb') as f:
    b = f.read()
    copy_name = "screen1.png"
    with open(copy_name, 'wb') as c:
        c.write(b)
posted @ 2022-09-01 17:17  Khru  阅读(44)  评论(0)    收藏  举报