一. OS模块
os 模块提供了一个与操作系统交互的接口,可以用来处理文件和目录的路径、创建和删除目录、执行系统命令、获取和修改环境变量等操作。
1.文件和目录操作
1.1 获取当前工作目录
python">import oscurrent_dir = os.getcwd()
print(current_dir) # 输出当前工作目录
os.getcwd() 用于获取当前工作目录。
1.2 改变工作目录
python">import osos.chdir(r'C:\Users\31052\Desktop') # 切换到指定目录
current_dir = os.getcwd()
print(current_dir) # 验证当前工作目录已改变
os.chdir(path) 用于改变当前的工作目录。
1.3 创建目录和删除目录
- 创建目录
python">import osos.mkdir('new_dir') # 创建一个新目录
- 递归创建多级目录
python">os.makedirs('parent/child', exist_ok=True) # 创建父子目录,exist_ok=True 如果目录已存在不会抛出异常
- 删除空目录
python">os.rmdir('empty_dir') # 删除空目录
- 删除多级空目录
python">os.removedirs('parent/child') # 如果是空目录,会递归删除父目录
1.4 列出目录内容
python">import osfiles = os.listdir('/path/to/directory')
print(files) # 返回目录下所有文件和子目录的名称列表
os.listdir(path) 返回指定目录中的所有文件和子目录。
1.5 判断文件路径是否存在
python">import osprint(os.path.exists('some_path')) # 检查路径是否存在
1.6 获取文件和目录的详细信息
- 获取文件的大小
python">import os
size = os.path.getsize('file.txt')
print(f"文件大小: {size} 字节")
- 获取文件的最后修改时间
python">import os
last_modified_time = os.path.getmtime('file.txt')
print(f"文件最后修改时间: {last_modified_time}")
2. 文件路径操作
2.1 拼接文件路径
python">import os
path = os.path.join('folder', 'subfolder', 'file.txt')
print(path) # 输出:folder/subfolder/file.txt
os.path.join() 用于将多个路径组合成一个完整路径。
2.2 判断路径类型
- 是否为文件
python]">import os
print(os.path.isfile('file.txt')) # 判断路径是否为文件
- 是否为目录
python">import os
print(os.path.isdir('folder')) # 判断路径是否为目录
2.3 获取绝对路径
python">import os
absolute_path = os.path.abspath('file.txt')
print(absolute_path) # 输出文件的绝对路径
os.path.abspath() 用于获取指定路径的绝对路径。
3. 其他常用功能
3.1 执行系统命令
python">import os
os.system('echo Hello, World!') # 输出 Hello, World!
os.system(command) 用于执行 shell 命令,但返回值较为简单,不适合捕获输出。
3.2 环境变量操作
python">import os
print(os.environ) # 输出当前所有环境变量# 获取环境变量的值
print(os.getenv('HOME'))# 设置环境变量
os.environ['MY_VAR'] = 'some_value'
os.environ 用来访问和修改环境变量。
二. shutil模块
shutil 模块提供了更高级的文件和目录操作,主要用于文件的复制、删除、移动、归档等任务。它非常适合用于处理大型文件或需要进行目录树操作的任务。
1. 文件和目录操作
1.1 复制文件
python">import shutil
shutil.copy('source.txt', 'destination.txt') # 复制文件到目标位置
shutil.copy(src, dst) 复制文件,将 src 文件复制到 dst 路径。
1.2 复制文件并保留元数据
python">import shutil
shutil.copy2('source.txt', 'destination.txt') # 复制文件并保留元数据(如修改时间)
shutil.copy2(src, dst) 除了复制文件内容外,还会保留文件的元数据。
1.3 复制整个目录
python">import shutil
shutil.copytree('source_dir', 'destination_dir') # 复制整个目录
shutil.copytree(src, dst) 复制整个目录及其内容到目标位置。
1.4 移动文件或目录
python">import shutil
shutil.move('source.txt', 'destination.txt') # 移动文件或目录
shutil.move(src, dst) 用于将文件或目录从 src 移动到 dst。
1.5 删除目录及其内容
python">import shutil
shutil.rmtree('directory_to_delete') # 删除目录及其所有内容shutil.rmtree(path)
递归删除指定路径下的目录及其内容。
2. 压缩和解压缩
2.1 创建压缩文件
python">import shutil
shutil.make_archive('archive_name', 'zip', '/path/to/directory') # 创建 zip 格式的压缩文件
shutil.make_archive(base_name, format, root_dir) 用于创建归档文件。format 可以是 ‘zip’、‘tar’、‘gztar’ 等。
2.2 解压缩文件
python">import shutil
shutil.unpack_archive('archive_name.zip', '/path/to/extract') # 解压到指定目录
shutil.unpack_archive(filename, extract_dir) 解压指定的归档文件到目标目录。
3. 示例:读取文件内容并移动
假设你需要从一个目录读取所有 .txt 文件的内容,然后将它们移动到另一个目录并重命名:
python">import os
import shutilsource_directory = '/path/to/source_directory'
destination_directory = '/path/to/destination_directory'# 确保目标目录存在
if not os.path.exists(destination_directory):os.makedirs(destination_directory)# 遍历源目录中的所有文件
for filename in os.listdir(source_directory):if filename.endswith('.txt'):source_file = os.path.join(source_directory, filename)# 读取文件内容with open(source_file, 'r') as file:content = file.read()# 将文件内容保存到目标目录new_filename = f"moved_{filename}"destination_file = os.path.join(destination_directory, new_filename)with open(destination_file, 'w') as new_file:new_file.write(content)# 移动源文件到目标目录shutil.move(source_file, os.path.join(destination_directory, filename))print(f"文件 {filename} 已移动并重命名为 {new_filename}")
总结
- os 模块 主要用于操作系统级别的任务,如文件和目录操作、环境变量、路径操作等。
- shutil 模块 提供了更高级的文件和目录操作,尤其是用于复制、移动、删除、归档、解压等任务。