Python文件访问

在 Python 中,文件访问是常见的操作,主要通过内置的 open() 函数实现,配合不同的模式和方法可以完成读取、写入、追加等操作。以下是关于 Python 文件访问的详细说明:

一、基本语法:open() 函数

open() 函数用于打开文件并返回文件对象,基本语法:

file_object = open(file_path, mode, encoding)
  • file_path:文件路径(绝对路径或相对路径)
  • mode:打开模式(决定文件操作类型)
  • encoding:编码格式(如 utf-8,文本模式下使用)

二、常用文件打开模式

模式含义特点
r只读模式(默认)文件必须存在,否则报错
w写入模式若文件存在则清空内容,不存在则创建
a追加模式在文件末尾添加内容,不存在则创建
r+读写模式可读写,文件必须存在
w+读写模式先清空再读写,不存在则创建
a+读写模式可读写,新内容追加在末尾
b二进制模式用于非文本文件(如图片、音频),需与上述模式组合(如 rbwb

三、文件操作的两种方式

1. 手动管理(需手动关闭文件)
# 打开文件
file = open("test.txt", "r", encoding="utf-8")

# 操作文件
content = file.read()
print(content)

# 关闭文件(必须执行,否则可能导致资源泄露)
file.close()
2. 上下文管理器(推荐,自动关闭文件)

使用 with 语句,无需手动调用 close(),代码块执行完毕后自动关闭文件:

with open("test.txt", "r", encoding="utf-8") as file:
    content = file.read()  # 读取内容
    print(content)

四、常用文件操作方法

1. 读取文件
  • read(size):读取指定字节数的内容,默认读取全部

    with open("test.txt", "r") as f:
        print(f.read(10))  # 读取前10个字符
    
  • readline():读取一行内容

    with open("test.txt", "r") as f:
        print(f.readline())  # 读取第一行
    
  • readlines():读取所有行,返回列表(每行作为元素)

    with open("test.txt", "r") as f:
        lines = f.readlines()
        for line in lines:
            print(line)
    
  • 直接迭代文件对象(高效读取大文件)

    with open("test.txt", "r") as f:
        for line in f:  # 逐行迭代,内存友好
            print(line)
    
2. 写入文件
  • write(content):写入字符串

    with open("test.txt", "w") as f:
        f.write("Hello, Python!\n")  # 写入内容,\n 表示换行
    
  • writelines(iterable):写入可迭代对象(如列表)

    lines = ["第一行\n", "第二行\n", "第三行\n"]
    with open("test.txt", "w") as f:
        f.writelines(lines)  # 批量写入
    
3. 其他常用方法
  • seek(offset):移动文件指针到指定位置(用于随机访问)
  • tell():返回当前文件指针位置
  • flush():刷新缓冲区,将内容立即写入文件

五、处理二进制文件

对于图片、音频等二进制文件,需使用 b 模式:

# 读取图片
with open("image.jpg", "rb") as f:
    data = f.read()  # 读取二进制数据

# 写入图片
with open("copy_image.jpg", "wb") as f:
    f.write(data)  # 写入二进制数据

六、注意事项

  1. 编码问题:文本文件需指定正确编码(如 encoding="utf-8"),否则可能出现乱码
  2. 路径问题:Windows 使用 \(需转义为 \\ 或用原始字符串 r""),macOS/Linux 使用 /
  3. 大文件处理:优先使用逐行迭代(for line in file),避免一次性加载全部内容导致内存占用过高
  4. 异常处理:可结合 try-except 捕获文件操作中的错误(如文件不存在、权限问题)
try:
    with open("test.txt", "r") as f:
        print(f.read())
except FileNotFoundError:
    print("文件不存在")
except Exception as e:
    print(f"发生错误:{e}")

通过以上方法,可以灵活地在 Python 中进行文件的读取、写入、修改等操作,根据实际需求选择合适的模式和方法即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值