Python提供了丰富的文件操作功能,允许你读取、写入、修改和删除文件。以下是一些基本的文件操作讲解和相关的代码示例:
文件打开与关闭
在Python中,使用 open()函数可以打开一个文件,该函数返回一个文件对象。完成文件操作后,应该使用 close()方法关闭文件。
|
# 打开文件 |
|
file = open('example.txt', 'r') # 'r'表示只读模式 |
|
|
|
# 进行文件操作 |
|
content = file.read() |
|
print(content) |
|
|
|
# 关闭文件 |
|
file.close() |
使用 with语句可以自动处理文件的关闭,这样就不需要显式地调用 close()方法。
|
# 使用with语句打开文件 |
|
with open('example.txt', 'r') as file: |
|
content = file.read() |
|
print(content) |
|
# 文件会在with块结束后自动关闭 |
读取文件
使用文件对象的 read()方法可以读取文件内容。
|
# 读取整个文件 |
|
with open('example.txt', 'r') as file: |
|
content = file.read() |
|
print(content) |
|
|
|
# 读取指定数量的字符 |
|
with open('example.txt', 'r') as file: |
|
content = file.read(10) # 读取前10个字符 |
|
print(content) |
|
|
|
# 按行读取文件 |
|
with open('example.txt', 'r') as file: |
|
for line in file: |
|
print(line, end='') # 注意end='',否则每行后面会有换行符 |
写入文件
使用文件对象的 write()方法可以写入文件内容。
|
# 写入内容到文件 |
|
with open('example.txt', 'w') as file: |
|
file.write('Hello, World!') |
|
|
|
# 追加内容到文件 |
|
with open('example.txt', 'a') as file: |
|
file.write('\nHello again!') |
文
· 'r': 只读模式(默认)
· 'w': 写模式,会覆盖原有文件内容
· 'a': 追加模式,会在文件末尾追加内容
· 'x': 创建模式,如果文件已存在则报错
· 'b': 二进制模式,通常与'r', 'w', 'a'等一起使用
· 't': 文本模式(默认)
文件
使用文件对象的 seek()方法可以移动文件读写的指针位置。
|
# 移动到文件的第5个字节处 |
|
with open('example.txt', 'r+') as file: |
|
file.seek(5) |
|
content = file.read() |
|
print(content) |
|
|
|
# 写入内容到文件的第5个字节处 |
|
with open('example.txt', 'r+') as file: |
|
file.seek(5) |
|
file.write('INSERT') |
文件和目录操作
Python的 os模块提供了许多文件和目录操作的功能。
|
import os |
|
|
|
# 检查文件是否存在 |
|
if os.path.exists('example.txt'): |
|
print("File exists.") |
|
|
|
# 创建目录 |
|
os.makedirs('new_directory') |
|
|
|
# 列出目录中的文件 |
|
for filename in os.listdir('.'): |
|
print(filename) |
|
|
|
# 删除文件 |
|
os.remove('example.txt') |
|
|
|
# 删除目录(需确保目录为空) |
|
os.rmdir('new_directory') |
|
|
|
# 获取文件大小 |
|
file_size = os.path.getsize('example.txt') |
|
print(f"File size: {file_size} bytes") |
|
|
|
# 获取文件路径 |
|
current_path = os.path.abspath('.') |
|
print(f"Current path: {current_path}") |
文件锁
在并发环境中,你可能需要确保同一时间只有一个进程可以写入文件,这可以通过文件锁来实现。Python的 fcntl模块提供了文件锁的功能。
|
import fcntl |
|
|
|
# 打开文件并获取写锁 |
|
with open('example.txt', 'w') as file: |
|
fcntl.flock(file.fileno(), fcntl.LOCK_EX) # 获取排他锁 |
|
file.write('Locked content') |
|
fcntl.flock(file.fileno(), fcntl.LOCK_UN) # 释放锁 |
这些是Python文件操作的基本概念和示例。实际上,文件操作可以变得非常复杂,涉及到更高级的缓冲、编码、错误处理等问题。因此,在处理文件时,理解并正确使用这些基础功能是非常重要的。