os 模块是 Python 标准库中用于访问操作系统功能的接口。它提供了一系列函数,可用于文件系统操作、路径管理、环境变量访问、进程控制等,是编写跨平台脚本的重要工具。

常见应用场景:

(1)获取或修改当前工作目录。

(2)文件和目录的创建、重命名、删除。

(3)遍历目录结构,获取文件状态信息。

(4)获取或设置环境变量。

(5)执行系统命令。若需执行命令更灵活推荐 subprocess。

(6)获取系统资源信息(如 CPU 核心数)、控制进程退出等。

◆ ◆

核心概念

1、os 模块封装了底层系统调用,适合跨平台文件系统操作。

2、它通常配合 子模块完成路径拼接与判断。

3、由于 os 提供的是面向过程的 API,Python 3.4 起推荐的新风格为面向对象的 pathlib,但 os 在实际工程中仍然广泛使用。

4、操作系统级的所有行为(路径、权限、进程、环境)大多能通过 os 实现。

◆ ◆

应用举例

例 1:获取当前工作目录

import os

print("当前目录是:", os.getcwd())

例 2:创建与删除目录

import os

os.mkdir("my_folder")
os.rmdir("my_folder")  # 注意:只能删除空目录

例 3:列出目录内容

import os

for name in os.listdir("."):
    print(name)

例 4:执行系统命令

import os

os.system("echo Hello from mediaTEA")

例 5:递归遍历目录

import os

for dirpath, dirnames, filenames in os.walk("."):
    print("目录:", dirpath)
    print("子目录:", dirnames)
    print("文件:", filenames)

例 6:获取 CPU 核心数

import os

print("CPU 核心数:", os.cpu_count())

例 7:获取当前进程 ID 并退出进程

import os

print("当前进程 PID:", os.getpid())
os._exit(0)  # 强制退出进程(不会执行 finally)

◆ ◆

常用函数速览

os._exit(code)

强制退出当前进程,不进行异常处理或清理。

参数:code 为整数,退出码(0 表示正常退出)

返回:None

说明:常用于子进程内部终止。

os.access(path, mode)

判断当前用户是否对路径具有指定的权限。

参数

path:路径(字符串)

mode:权限常量之一,如 os.R_OK, os.W_OK, os.X_OK, os.F_OK

返回:布尔值,True 表示有权限

示例:

os.access('file.txt', os.W_OK) 判断是否可写。

os.chdir(path)

更改当前工作目录。

参数:path 为目标路径字符串

返回:None

os.chmod(path, mode)

修改文件或目录的权限。

参数

path:路径

mode:整数形式权限值,如 0o755

返回:None

说明:仅限类 Unix 系统;需具备权限。

os.chown(path, uid, gid)

更改文件或目录的所有者与所属组(仅类 Unix)。

参数

path:路径字符串

uid:用户 ID

gid:组 ID

返回:None

说明:通常需 root 权限。

os.cpu_count()

获取系统的逻辑 CPU 核心数。

参数:无

返回:整数或 None(失败时)

os.environ

环境变量映射对象。可作为字典访问或修改变量。

用法:os.environ['PATH'], os.environ.get('HOME')

返回:环境变量字典

os.execvp(file, args)

用新程序替换当前进程(执行系统命令)。

参数

file:命令或可执行文件名

args:参数列表(含命令本身)

返回:无(调用成功后不会返回)

说明:属于 exec* 系列的一种,适合查找命令路径。

os.getcwd()

获取当前工作目录路径。

参数:无

返回:字符串。

os.getgid()

获取当前进程的组 ID(仅类 Unix)。

参数:无

返回:整数 GID

os.getlogin()

获取当前登录用户名(终端会话用户)。

参数:无

返回:字符串

说明:某些平台或环境中可能失败。

os.getpid()

获取当前进程 ID。

参数:无

返回:整数 PID

os.getppid()

获取当前进程的父进程 ID。

参数:无

返回:整数 PID

os.getuid()

获取当前进程的用户 ID(仅类 Unix)。

参数:无

返回:整数 UID

os.listdir(path=".")

列出指定目录下的所有文件和文件夹名称。

参数:path 字符串,默认为当前目录

返回:列表

os.mkdir(path)

创建单层目录。

参数:path 路径字符串

返回:None

os.makedirs(path, exist_ok=False)

递归创建多层目录。

参数

path:路径字符串

exist_ok:若为 True,存在也不报错

返回:None

os.name

返回当前操作系统平台类型。

返回

'posix'(Unix/Linux/macOS)

'nt'(Windows)

'java'(Jython)

os.remove(path)

删除文件。

参数:path 为文件路径字符串

返回:None

异常:若路径非文件或不存在,将报错。

os.rename(src, dst)

重命名文件或目录。

参数

src:原路径

dst:新路径

返回:None

os.rmdir(path)

删除空目录。

参数:path 为路径字符串

返回:None。

os.stat(path)

获取路径的详细信息(大小、修改时间、权限等)。

参数:path 字符串

返回:os.stat_result 对象

os.system(command)

在子终端中执行系统命令。

参数:command 字符串(如 "ls -l")

返回:命令的退出状态码(整数)

os.umask(mask)

设置当前进程的默认权限屏蔽码。

参数:mask 为八进制整数,如 0o022

返回:原先的 umask 值

os.uname()

返回当前操作系统的详细信息(仅类 Unix)。

参数:无

返回:命名元组,包含 sysname, nodename, release, version, machine

os.walk(top)

递归遍历目录树,生成三元组 (dirpath, dirnames, filenames)。

参数:top 起始目录路径

返回:生成器,用于遍历所有文件与子目录

点赞有美意,赞赏是鼓励