Python os 模块使用
os 模块是 Python 中与操作系统交互的核心模块,提供了许多系统级操作的功能。
1. 基本路径操作
1.1 获取当前工作目录
import os
# 获取当前工作目录
current_dir = os.getcwd()
print(current_dir) # 输出: /Users/username/projects
1.2 路径拼接
# 使用 os.path.join() 拼接路径
path = os.path.join('folder', 'subfolder', 'file.txt')
print(path) # 输出: folder/subfolder/file.txt (Unix) 或 folder\subfolder\file.txt (Windows)
2. 文件和目录操作
2.1 创建目录
# 创建单个目录
os.mkdir('new_folder')
# 创建多级目录
os.makedirs('folder/subfolder/subsubfolder')
2.2 删除操作
# 删除文件
os.remove('file.txt')
# 删除空目录
os.rmdir('empty_folder')
# 删除目录及其内容
import shutil
shutil.rmtree('folder_with_contents')
2.3 文件重命名
# 重命名文件或目录
os.rename('old_name.txt', 'new_name.txt')
3. 路径处理
3.1 路径分割
path = '/home/user/documents/file.txt'
# 分割路径和文件名
dirname = os.path.dirname(path)
filename = os.path.basename(path)
print(dirname) # 输出: /home/user/documents
print(filename) # 输出: file.txt
# 分割文件名和扩展名
name, ext = os.path.splitext('file.txt')
print(name) # 输出: file
print(ext) # 输出: .txt
4. 系统信息
4.1 环境变量
# 获取环境变量
home = os.environ.get('HOME')
print(home) # 输出: /home/username
home = os.getenv('HOME')
print(home) # 输出: /home/username
# 设置环境变量
os.environ['MY_VAR'] = 'my_value'
4.2 系统相关
# 获取系统名称
print(os.name) # 输出: 'posix' (Unix/Linux/Mac) 或 'nt' (Windows)
# 获取系统路径分隔符
print(os.sep) # 输出: '/' (Unix) 或 '\' (Windows)
5. 文件信息
5.1 检查文件/目录
# 检查路径是否存在
print(os.path.exists('file.txt')) # 输出: True 或 False
# 检查是否为文件
print(os.path.isfile('file.txt')) # 输出: True 或 False
# 检查是否为目录
print(os.path.isdir('folder')) # 输出: True 或 False
5.2 文件属性
# 获取文件大小(字节)
size = os.path.getsize('file.txt')
print(size) # 输出: 1234
# 获取文件修改时间
mtime = os.path.getmtime('file.txt')
print(mtime) # 输出: 1621234567.89
6. 目录遍历
6.1 列出目录内容
# 列出目录中的文件和子目录
print(os.listdir('.')) # 输出: ['file1.txt', 'file2.txt', 'folder1']
# 使用 walk 遍历目录树
for root, dirs, files in os.walk('.'):
print(f'当前目录: {root}')
print(f'子目录: {dirs}')
print(f'文件: {files}')
注意事项
- 在处理路径时,建议使用
os.path.join()
而不是手动拼接字符串,以确保跨平台兼容性 - 删除文件或目录前应当先检查是否存在,避免抛出异常
- 使用
os.makedirs()
时可以添加exist_ok=True
参数,避免目录已存在时报错 - 在处理文件路径时,推荐使用原始字符串(r'path\to\file')或正斜杠('path/to/file')