【Python】open() 函数:打开文件进行操作

在 Python 中,文件操作非常常见,可以通过内建的 open() 函数和其他文件处理函数对文件进行读取、写入、删除、重命名等操作。下面是 Python 中常见的文件操作方法和技巧。

1. 打开文件

使用 open() 函数打开文件,它会返回一个文件对象,可以用来读取或写入文件内容。

# 打开文件,'r' 表示读取模式
file = open('file.txt', 'r')
open() 函数常见模式:
  • 'r':只读模式(默认模式)。文件必须存在。
  • 'w':写入模式。如果文件存在,文件内容会被覆盖;如果文件不存在,会创建一个新文件。
  • 'a':追加模式。如果文件存在,写入的数据会追加到文件末尾;如果文件不存在,会创建一个新文件。
  • 'b':二进制模式,通常与其他模式一起使用,如 'rb''wb'
  • 'x':排他性创建。如果文件已存在,抛出 FileExistsError
  • 't':文本模式(默认模式)。
  • 2. 读取文件

    2.1 读取整个文件

    使用 read() 方法可以读取文件的全部内容,返回一个字符串。

    with open('file.txt', 'r') as file:
        content = file.read()
        print(content)
    
    2.2 逐行读取文件

    使用 readline() 方法可以逐行读取文件,每次调用返回文件的一行。使用 readlines() 方法可以读取文件的所有行并返回一个列表。

    with open('file.txt', 'r') as file:
        # 逐行读取
        line = file.readline()
        while line:
            print(line.strip())  # 去掉行末的换行符
            line = file.readline()
    
    # 或者使用 readlines()
    with open('file.txt', 'r') as file:
        lines = file.readlines()
        for line in lines:
            print(line.strip())
    

    3. 写入文件

    3.1 写入文本

    使用 write() 方法将文本写入文件。如果文件不存在,open() 会创建文件。

    with open('file.txt', 'w') as file:
        file.write("Hello, World!\n")
        file.write("Welcome to Python file operations.\n")
    
    3.2 追加文本

    使用 'a' 模式打开文件,数据会被添加到文件末尾,而不会覆盖原内容。

    with open('file.txt', 'a') as file:
        file.write("Appending some new content.\n")
    
    3.3 写入多行

    可以通过 writelines() 方法一次性写入多行,注意每行必须以换行符结束。

    lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
    with open('file.txt', 'w') as file:
        file.writelines(lines)
    

    4. 关闭文件

    虽然使用 with open() 语句可以自动关闭文件,但如果手动打开文件,操作完成后需要使用 close() 方法来关闭文件。

    file = open('file.txt', 'r')
    # 执行文件操作
    file.close()
    

    5. 文件的其他操作

    5.1 获取文件大小

    可以使用 os.path.getsize() 方法获取文件的大小,返回的是字节数。

    import os
    
    file_size = os.path.getsize('file.txt')
    print(f"File size: {file_size} bytes")
    
    5.2 检查文件是否存在

    可以使用 os.path.exists()os.path.isfile() 来检查文件是否存在。

    import os
    
    if os.path.exists('file.txt'):
        print("File exists.")
    else:
        print("File does not exist.")
    
    5.3 重命名文件

    使用 os.rename() 可以重命名文件。

    import os
    
    os.rename('old_name.txt', 'new_name.txt')
    
    5.4 删除文件

    使用 os.remove() 删除文件。

    import os
    
    os.remove('file.txt')
    
    5.5 创建文件夹

    可以使用 os.mkdir()os.makedirs() 创建文件夹,makedirs() 支持创建多级目录。

    import os
    
    os.mkdir('new_directory')  # 创建单个目录
    os.makedirs('parent/child/grandchild')  # 创建多级目录
    
    5.6 删除空目录

    使用 os.rmdir() 删除空目录。

    import os
    
    os.rmdir('empty_directory')
    
    5.7 删除非空目录

    删除非空目录可以使用 shutil.rmtree(),它会递归删除目录及其中的所有文件和子目录。

    import shutil
    
    shutil.rmtree('non_empty_directory')
    

    6. 二进制文件操作

    对于二进制文件(如图像、音频等),需要以二进制模式('rb', 'wb')打开文件。

    6.1 读取二进制文件
    with open('image.jpg', 'rb') as file:
        content = file.read()
        print(content)  # 输出二进制数据
    
    6.2 写入二进制文件
    with open('output_image.jpg', 'wb') as file:
        file.write(content)  # 将二进制数据写入文件
    

    7. 文件操作的高级技巧

    7.1 上下文管理器

    使用 with open() 可以确保文件操作完成后文件被自动关闭。它是一种更安全、更优雅的方式来处理文件。

    with open('file.txt', 'r') as file:
        content = file.read()
        print(content)
    
    7.2 异常处理

    使用 try-except 来捕获文件操作中的异常。

    try:
        with open('non_existent_file.txt', 'r') as file:
            content = file.read()
    except FileNotFoundError:
        print("File not found!")
    except IOError:
        print("An error occurred while handling the file.")
    

    8. 总结

    Python 提供了强大的文件操作功能,包括:

  • 使用 open() 打开文件,可以通过不同的模式进行文件读取、写入、追加等操作。
  • 读取文件内容时,可以使用 read() 读取全部内容,使用 readline()readlines() 逐行读取。
  • 写入文件时,可以使用 write()writelines() 写入文本内容。
  • 对文件进行重命名、删除、获取大小等操作时,Python 提供了 osshutil 模块。
  • 对于二进制文件,可以以 'rb''wb' 模式进行操作。
  • 使用 with 语句可以确保文件的正确关闭,避免文件泄露。
  • 作者:彬彬侠

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python】open() 函数:打开文件进行操作

    发表回复