Python 文件I/O(输入/输出)是Python中用于读取、写入和修改文件数据的重要功能。文件I/O是程序与文件系统交互的基础,无论是处理用户数据、配置信息,还是进行日志记录,文件I/O都扮演着关键角色。下面,我将用约1500字来详细介绍Python文件I/O的相关内容,包括打开文件、读取文件、写入文件、文件指针操作、异常处理、二进制文件操作等,并附上相应的代码示例。
1. 打开文件
在Python中,使用内置的open()函数可以打开文件。该函数接受一个文件名作为参数,并返回一个文件对象,该对象提供了许多方法用于读取、写入和修改文件。
python
|
# 打开文件,'r'表示只读模式 |
|
file = open('example.txt', 'r') |
|
|
|
# 打开文件并指定编码(如果文件包含非ASCII字符) |
|
file = open('example_utf8.txt', 'r', encoding='utf-8') |
|
|
|
# 打开文件以进行写入,如果文件已存在,则覆盖其内容 |
|
file = open('example.txt', 'w') |
|
|
|
# 打开文件以进行追加写入,不会覆盖原有内容 |
|
file = open('example.txt', 'a') |
|
|
|
# 完成后关闭文件 |
|
file.close() |
2. 读取文件
文件对象提供了多个方法来读取文件内容。
2.1 逐行读取
python
|
with open('example.txt', 'r') as file: |
|
for line in file: |
|
print(line, end='') # end='' 避免自动添加的换行符 |
2.2 读取整个文件
python
|
with open('example.txt', 'r') as file: |
|
content = file.read() |
|
print(content) |
2.3 读取指定数量的字符
python
|
with open('example.txt', 'r') as file: |
|
content = file.read(10) # 读取前10个字符 |
|
print(content) |
3. 写入文件
使用文件对象的write()方法可以将数据写入文件。
python
|
with open('example.txt', 'w') as file: |
|
file.write('Hello, World!\n') |
|
file.write('This is an example file.\n') |
4. 文件指针操作
文件对象有一个内部指针,它指向文件中的当前位置。你可以使用seek()方法来改变文件指针的位置,使用tell()方法来获取当前文件指针的位置。
python
|
with open('example.txt', 'r+') as file: |
|
content = file.read(10) |
|
print(content) |
|
file.seek(0) # 将文件指针移回文件开头 |
|
print(file.read()) # 读取整个文件 |
5. 异常处理
在进行文件I/O操作时,可能会遇到各种异常,如文件不存在、没有权限访问等。使用try-except语句可以捕获这些异常并进行处理。
python
|
try: |
|
with open('nonexistent_file.txt', 'r') as file: |
|
print(file.read()) |
|
except FileNotFoundError: |
|
print("文件不存在") |
6. 二进制文件操作
除了文本文件外,Python还支持二进制文件的操作。在打开文件时,可以使用'b'模式来指定二进制模式。
python
|
# 写入二进制数据 |
|
with open('example.bin', 'wb') as file: |
|
data = b'\x00\x01\x02\x03' |
|
file.write(data) |
|
|
|
# 读取二进制数据 |
|
with open('example.bin', 'rb') as file: |
|
data = file.read() |
|
print(data) # 输出:b'\x00\x01\x02\x03' |
7. 使用上下文管理器(with语句)
使用with语句可以确保文件在使用完毕后被正确关闭,即使发生了异常也是如此。这是一种更加安全、简洁的文件I/O方式。
python
|
with open('example.txt', 'r') as file: |
|
content = file.read() |
|
# 在这里,文件已经被自动关闭,无需调用file.close() |
总结
Python的文件I/O功能强大且灵活,可以满足各种文件处理需求。通过合理地使用文件I/O相关的函数和方法,我们可以轻松地读取、写入和修改文件数据。同时