在Python中,文件操作是一个基础但重要的功能。通过对文件的读取、写入和管理,你可以处理数据持久化以及与外部数据的交互。Python提供了内置函数和模块(如 os
和 shutil
)来处理文件和目录。
7.1 打开、读取、写入文件
文件操作通常分为以下三步:
- 打开文件:使用
open()
函数。 - 操作文件:读取、写入或追加内容。
- 关闭文件:使用
close()
方法。
7.1.1 使用 open()
函数
open()
函数用于打开文件,并返回一个文件对象。它的基本语法如下:
open(file, mode='r', encoding=None)
- 参数说明:
file
:文件路径(相对路径或绝对路径)。mode
:文件操作模式,常见选项:'r'
:只读模式(默认)。'w'
:写模式(如果文件不存在会创建,存在则清空)。'a'
:追加模式(在文件末尾写入)。'rb'
/'wb'
:以二进制模式读取/写入。
encoding
:指定字符编码(如utf-8
)。
7.1.2 读取文件
文件对象提供了多种方法来读取内容:
read()
:读取整个文件内容。readline()
:按行读取。readlines()
:读取所有行,并返回列表。
示例:
# 打开文件并读取内容
file = open('example.txt', 'r', encoding='utf-8')
content = file.read() # 读取所有内容
print(content)
file.close() # 关闭文件
7.1.3 写入文件
写入文件时可以使用 write()
方法。如果文件不存在,Python会自动创建文件。
示例:
# 写入文件
file = open('example.txt', 'w', encoding='utf-8')
file.write("Hello, World!\n")
file.write("Python 文件操作示例。")
file.close()
7.1.4 追加内容
在追加模式下,写入内容不会覆盖已有内容。
示例:
# 追加内容到文件
file = open('example.txt', 'a', encoding='utf-8')
file.write("\n追加的内容。")
file.close()
7.2 上下文管理器(with
语句)
使用 with
语句管理文件时,无需显式调用 close()
,它会自动在操作完成后关闭文件,避免资源泄露。
示例:
# 使用 with 打开文件
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
优点:
- 简洁。
- 安全,自动处理文件关闭。
写入文件的 with
语句示例:
with open('example.txt', 'w', encoding='utf-8') as file:
file.write("使用上下文管理器写入文件。")
7.3 文件路径与目录操作
在实际开发中,你可能需要操作不同路径的文件或者管理目录结构。Python的 os
和 shutil
模块提供了丰富的功能。
7.3.1 文件路径操作
使用 os
模块可以处理路径的拼接、分割等操作,确保代码在不同操作系统下都能正常运行。
示例:
import os
# 获取当前工作目录
current_dir = os.getcwd()
print(f"当前目录:{current_dir}")
# 拼接路径
file_path = os.path.join(current_dir, 'example.txt')
print(f"文件路径:{file_path}")
# 检查文件是否存在
if os.path.exists(file_path):
print("文件存在")
else:
print("文件不存在")
7.3.2 目录操作
os
和 shutil
提供了创建、删除、遍历目录的功能。
示例:
# 创建目录
os.mkdir('new_folder')
# 删除目录
os.rmdir('new_folder')
# 遍历目录
for root, dirs, files in os.walk('.'): # 当前目录
print(f"根目录:{root}")
print(f"子目录:{dirs}")
print(f"文件:{files}")
7.3.3 拷贝和移动文件
shutil
模块提供了高级文件管理功能。
示例:
import shutil
# 拷贝文件
shutil.copy('example.txt', 'backup.txt')
# 移动文件
shutil.move('backup.txt', 'new_folder/backup.txt')
小结
- 文件操作:
- 使用
open()
打开文件,模式决定操作类型(读取、写入或追加)。 - 使用文件对象的
read()
、write()
方法读取或写入内容。 - 使用
with
管理文件自动关闭资源。
- 使用
- 文件路径与目录:
- 使用
os
模块操作路径和目录(如创建、删除、遍历目录)。 - 使用
shutil
进行高级操作(如拷贝、移动文件)。
- 使用
通过熟练掌握文件操作和目录管理,你可以高效地处理数据文件和目录结构,为数据处理和持久化提供强大的支持。