ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Python中os模块的基本用法

Python中os模块的基本用法

os模块是Python 的标准库模块之一,它提供了一种与操作系统进行交互的便捷方式,可以执行多种与操作系统相关的任务,如文件和目录操作、环境变量管理、进程管理等。

主要功能和常见用法

1.文件和目录操作

获取当前工作目录
import os current_dir = os.getcwd()
改变当前工作目录
os.chdir('/path/to/directory')
创建目录
os.mkdir('new_directory')
递归创建多级目录
os.makedirs('parent_dir/child_dir')
删除文件
os.remove('file.txt')
删除目录
os.rmdir('directory')
递归删除多级目录
os.removedirs('parent_dir/child_dir')

2. 路径操作

获取路径的绝对路径
abs_path = os.path.abspath('file.txt')

可以通过以下方式获取当前目录的绝对路径 :

os.path.abspath('.') # 假设当前工作目录是 /home/user/project,那么执行这段代码时,输出将是:/home/user/project

'.' 表示当前路径,所以将其作为参数传递给 os.path.abspath() 时,表示希望获取当前目录的绝对路径。

连接路径
full_path = os.path.join('directory', 'file.txt')

os.path.join() 是将多个路径组件拼接在一起的方法,确保在不同的操作系统中生成有效的路径。它可以自动处理路径之间的分隔符,因此无论你使用什么操作系统,都能确保路径是正确的。os.path.join()有以下应用场景:

跨平台路径拼接:在不同的操作系统中,路径分隔符可能不同。例如,Windows 使用反斜杠\,而 Linux 和 macOS 使用斜杠/。os.path.join() 会根据操作系统自动选择正确的分隔符。

path = os.path.join('folder', 'subfolder', 'file.txt') # Windows: 'folder\\subfolder\\file.txt' # Linux/macOS: 'folder/subfolder/file.txt'

生成动态路径:当你的程序需要根据用户输入或程序逻辑动态生成路径时,os.path.join() 可以轻松将目录和文件名组合成完整路径。

directory = '/home/user/documents' filename = 'report.pdf' full_path = os.path.join(directory, filename) # 结果: '/home/user/documents/report.pdf'

处理相对路径:如果你有部分路径,并希望将其与当前目录或其他相对路径结合,可以使用 os.path.join() 。

relative_path = os.path.join('..', 'data', 'input.csv') # 结果: '../data/input.csv'

构建复杂目录结构:在生成复杂的目录结构时,os.path.join() 可以确保路径的正确性,避免手动添加分隔符的错误。

base_dir = '/var/www' sub_dir = 'html' file_name = 'index.html' path = os.path.join(base_dir, sub_dir, file_name) # 结果: '/var/www/html/index.html'

处理文件批量操作:在处理文件批量操作时,例如批量读取某个目录下的所有文件,可以通过 os.path.join() 生成完整的文件路径。

directory = '/path/to/files' files = ['file1.txt', 'file2.txt', 'file3.txt'] for file in files: full_path = os.path.join(directory, file) print(full_path) # 结果: # /path/to/files/file1.txt # /path/to/files/file2.txt # /path/to/files/file3.txt
分离路径中的文件名和目录
directory, filename = os.path.split('/path/to/file.txt')
获取文件的扩展名
filename, extension = os.path.splitext('file.txt')
判断路径是否存在
os.path.exists('/path/to/directory')
判断是否为文件
os.path.isfile('/path/to/file.txt')
判断是否为目录
os.path.isdir('/path/to/directory')

3. 执行系统命令

运行系统命令
os.system('ls -l')

4. 环境变量操作

获取环境变量
path = os.getenv('PATH')
设置环境变量
os.environ['NEW_VAR'] = 'value'

5. 获取进程信息

获取当前进程ID
pid = os.getpid()
获取父进程ID
ppid = os.getppid()
获取当前用户ID
uid = os.getuid()
获取当前组ID
gid = os.getgid()

6. 文件重命名和移动

重命名文件或目录
os.rename('old_name.txt', 'new_name.txt')
移动文件或目录:(使用 os.rename 实现)
os.rename('/path/to/file.txt', '/new/path/to/file.txt')

这些功能涵盖了操作系统交互的很多常见场景,是使用 Python 进行系统级编程的重要工具。

典型应用场景

自动化脚本:使用 os 模块可以方便地编写文件操作、批量重命名、目录遍历等自动化任务。

系统信息获取:获取操作系统类型、环境变量、进程信息等。

跨平台开发:os 模块可以帮助编写与操作系统无关的代码,确保代码在不同的操作系统上都能运行。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进