Python 文件操作基础

在这篇将详细介绍如何打开文件读写文件,以及如何处理文件操作中的异常


1. 打开文件:open()

open() 函数用于打开文件,并返回一个文件对象,你可以通过这个对象操作文件内容。打开文件时,需要指定文件路径和操作模式。

语法

file_object = open(file_path, mode)

常见操作模式

模式 描述
'r' 读取文件(默认模式),文件必须存在。
'w' 写入文件,如果文件存在则清空内容;如果文件不存在则创建。
'a' 追加模式,将新内容添加到文件末尾。
'b' 二进制模式,用于操作非文本文件(如图片、音频)。
'rb' 以二进制模式读取文件。
'wb' 以二进制模式写入文件。

示例:打开文件用于读取

file = open('example.txt', 'r')  # 打开文件用于读取
print(file.read())               # 打印文件内容
file.close()                     # 关闭文件

注意:如果忘记关闭文件,可能会占用系统资源或导致数据未及时写入磁盘。


2. 使用 with 语句自动管理文件

使用 with 语句打开文件时,Python 会在代码块结束后自动关闭文件,避免忘记调用 close()

读取文件内容

with open('example.txt', 'r') as file:
    content = file.read()  # 读取整个文件内容
    print(content)  # 打印文件内容

写入文件内容

with open('example.txt', 'w') as file:
    file.write('Hello, Python!\n')  # 写入一行文本

追加内容

with open('example.txt', 'a') as file:
    file.write('This is a new line.\n')  # 在文件末尾追加一行

3. 读取文件的不同方式

Python 提供了多种读取文件内容的方式,适用于不同的场景。

方法 描述 示例
read() 读取整个文件内容为字符串 content = file.read()
readline() 读取文件的一行内容 line = file.readline()
readlines() 读取所有行并返回列表 lines = file.readlines()

示例:逐行读取文件

示例1

with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())  # 去除换行符并打印每一行

示例2

with open('example.txt', 'r') as file:
    while True:
        line = file.readline()  # 读取一行
        if not line:  # 如果是空字符串,说明文件结束
            break
        print(line.strip())  # 打印当前行内容

小提示: 如果是在某系统使用 ~/xxx.txt情况 , ~ 符号(代表用户的主目录)通常不会直接在文件路径中被识别, 通过下面的方案改进

import os
path = os.path.expanduser("~/xxx.txt")
with open(path, 'r') as file:
    ......

4. 文件异常处理

文件操作中可能会遇到错误,例如文件不存在或没有权限。我们可以使用 try-except 语句来捕获这些异常,避免程序崩溃。

常见异常

  • FileNotFoundError:文件不存在。
  • PermissionError:没有权限访问文件。
  • 示例:捕获文件异常

    try:
        with open('nonexistent.txt', 'r') as file:
            content = file.read()
            print(content)
    except FileNotFoundError:
        print("错误:文件不存在。请检查路径。")
    except PermissionError:
        print("错误:没有权限读取该文件。")
    except Exception as e:
        print(f"发生了其他错误:{e}")
    

    5. 二进制文件操作

    对于非文本文件(如图片或音频),需要以二进制模式读取和写入。

    示例:读取二进制文件

    with open('image.jpg', 'rb') as file:
        data = file.read()
        print(data[:10])  # 打印前10个字节的数据
    

    示例:写入二进制文件

    with open('copy.jpg', 'wb') as file:
        with open('image.jpg', 'rb') as src:
            file.write(src.read())  # 复制图片
    

    6. 文件路径说明

    open() 中,文件路径可以是绝对路径相对路径

  • 绝对路径:从根目录开始的完整路径。
    示例:open('/Users/user/documents/file.txt', 'r')

  • 相对路径:相对于当前工作目录的路径。
    示例:open('file.txt', 'r')

  • 如果路径中有中文或空格,可以使用原始字符串r'')避免转义错误:

    with open(r'C:\用户\文档\文件.txt', 'r') as file:
        print(file.read())
    

    7. 总结

    常见的文件操作步骤

    1. 使用 open()with 语句打开文件。
    2. 选择合适的读取或写入模式('r''w''a' 等)。
    3. 使用 read()write()readlines() 等方法进行操作。
    4. 如果使用 open(),操作完成后要调用 close() 关闭文件。
    5. 使用 try-except 捕获文件操作中的异常。

    完整代码示例

    try:
        with open('example.txt', 'r') as file:
            print("文件内容:")
            print(file.read())
    except FileNotFoundError:
        print("文件不存在,请检查路径。")
    except PermissionError:
        print("没有权限访问该文件。")
    except Exception as e:
        print(f"发生了未知错误:{e}")
    

    8. 小贴士

  • 文件操作要小心:写入模式 'w' 会清空文件内容,请确认无误后再使用。
  • 处理换行符:读取文本时,可以使用 strip() 去除多余的换行符。
  • 二进制操作:当处理图片、音频等非文本文件时,记得使用 'rb''wb'
  • 作者:咱家阿星

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 文件操作基础

    发表回复