Python sys/os 平台接口

2 min入门

Python sys/os 平台接口 的完整教学讲解。

sys 解释器接口

基本写法:命令行参数 sys.argv

# 获取命令行参数列表
import sys
print(sys.argv)         # ['script.py', 'arg1', 'arg2']
print(sys.argv[1:])     # 用户传入的参数

基本写法:退出程序 sys.exit([<状态码>])

# 退出并返回状态码
if len(sys.argv) < 2:
    sys.exit(1)  # 非零表示异常退出

基本写法:标准输入输出 sys.stdin / sys.stdout / sys.stderr

# 重定向或直接使用标准流
sys.stdout.write("标准输出\n")
sys.stderr.write("错误信息\n")
name = sys.stdin.readline().strip()

基本写法:递归深度 sys.getrecursionlimit() / sys.setrecursionlimit(<n>)

# 查询与设置递归深度上限
print(sys.getrecursionlimit())  # 1000
sys.setrecursionlimit(2000)

基本写法:版本信息 sys.version / sys.version_info

# 获取解释器版本
print(sys.version_info.major, sys.version_info.minor)  # 3 12

基本写法:平台标识 sys.platform

# 获取操作系统平台标识
print(sys.platform)  # win32 / linux / darwin

基本写法:最大整数值 sys.maxsize

# 获取平台最大整数
print(sys.maxsize)  # 64 位系统为 2**63 - 1

基本写法:模块搜索路径 sys.path

# 查看与修改模块搜索路径
import sys
sys.path.append("/custom/libs")

基本写法:递增打印进度 sys.stdout.write + \r

# 原地刷新输出进度条
for i in range(101):
    sys.stdout.write(f"\r进度: {i}%")
    sys.stdout.flush()

os 目录与文件操作

基本写法:当前工作目录 os.getcwd()

# 获取当前工作目录
import os
print(os.getcwd())

基本写法:切换目录 os.chdir(<路径>)

# 改变当前工作目录
os.chdir("/tmp")

基本写法:列出目录内容 os.listdir(<路径>)

# 列出目录下所有条目
for name in os.listdir("."):
    print(name)

基本写法:创建目录 os.mkdir(<路径>) / os.makedirs(<路径>)

# 创建单层或多层目录
os.mkdir("newdir")
os.makedirs("a/b/c", exist_ok=True)

基本写法:删除文件与目录 os.remove(<文件>) / os.rmdir(<空目录>)

# 删除文件或空目录
os.remove("data.txt")
os.rmdir("emptydir")

基本写法:递归删除目录树 shutil.rmtree(<目录>)

# 递归删除非空目录
import shutil
shutil.rmtree("old_project")

基本写法:重命名与移动 os.rename(<旧名>, <新名>)

# 重命名文件或目录
os.rename("old.txt", "new.txt")

基本写法:递归遍历目录 os.walk(<路径>)

# 自顶向下遍历目录树
for root, dirs, files in os.walk("."):
    for f in files:
        print(os.path.join(root, f))

基本写法:文件信息 os.stat(<路径>)

# 获取文件大小、修改时间等元信息
st = os.stat("data.txt")
print(st.st_size, st.st_mtime)

os 环境与进程

基本写法:环境变量 os.environ

# 读取与设置环境变量
print(os.environ.get("HOME"))
os.environ["MY_VAR"] = "value"

基本写法:获取进程号 os.getpid() / os.getppid()

# 获取当前进程与父进程 ID
print(os.getpid(), os.getppid())

基本写法:执行系统命令 os.system(<命令>)

# 执行 shell 命令并返回退出码
ret = os.system("echo hello")

基本写法:CPU 核数 os.cpu_count()

# 获取系统 CPU 核心数
print(os.cpu_count())

基本写法:获取系统随机字节 os.urandom(<字节数>)

# 生成密码学安全的随机字节
token = os.urandom(16)

os.path 路径操作

基本写法:拼接路径 os.path.join(<路径1>, <路径2>)

# 跨平台安全拼接路径
p = os.path.join("dir", "sub", "file.txt")

基本写法:判断存在 os.path.exists(<路径>)

# 判断路径是否存在
print(os.path.exists("data.txt"))

基本写法:判断文件与目录 os.path.isfile(<路径>) / os.path.isdir(<路径>)

# 区分文件与目录
print(os.path.isfile("a.txt"), os.path.isdir("d"))

基本写法:取文件名与目录名 os.path.basename(<路径>) / os.path.dirname(<路径>)

# 拆分路径末尾与父目录
print(os.path.basename("/a/b/c.txt"))  # c.txt
print(os.path.dirname("/a/b/c.txt"))   # /a/b

基本写法:扩展名拆分 os.path.splitext(<路径>)

# 分离文件名与扩展名
name, ext = os.path.splitext("archive.tar.gz")
print(name, ext)  # archive.tar .gz

基本写法:绝对路径 os.path.abspath(<路径>) / os.path.realpath(<路径>)

# 转换为绝对路径并解析软链接
print(os.path.abspath("../a.txt"))
print(os.path.realpath("link.txt"))

基本写法:路径大小与时间 os.path.getsize(<路径>) / os.path.getmtime(<路径>)

# 获取文件大小与修改时间
print(os.path.getsize("a.txt"))

platform 平台信息

基本写法:操作系统类型 platform.system()

# 获取操作系统名称
import platform
print(platform.system())  # Windows / Linux / Darwin

基本写法:Python 版本 platform.python_version()

# 获取当前 Python 版本字符串
print(platform.python_version())  # 3.12.0

基本写法:机器架构 platform.machine()

# 获取 CPU 架构
print(platform.machine())  # AMD64 / arm64