os模块示例

os 是 Python 的标准库模块之一,全称为 "Operating System",它提供了与操作系统交互的接口,允许你通过 Python 代码执行文件/目录操作、环境变量管理、进程控制等系统级任务。os 模块的功能非常广泛,是处理文件系统、运行外部命令、获取系统信息等场景的核心工具。


1. 主要功能分类

(1) 文件/目录操作

  • 创建/删除目录

    import os
    
    os.mkdir("new_dir")      # 创建单级目录
    os.makedirs("a/b/c")     # 递归创建多级目录
    os.rmdir("empty_dir")     # 删除空目录
    os.removedirs("a/b/c")   # 递归删除目录(仅当目录为空时)
    
  • 文件操作

    os.rename("old.txt", "new.txt")  # 重命名文件
    os.remove("file.txt")            # 删除文件
    os.replace("file.txt", "backup.txt")  # 覆盖重命名(Python 3.3+)
    
  • 路径处理(与 os.path 结合使用):

    os.getcwd()          # 获取当前工作目录
    os.chdir("/home/user") # 切换工作目录
    os.listdir(".")       # 列出目录内容
    

(2) 环境变量管理

  • 获取或设置环境变量:
    os.environ["PATH"]      # 获取环境变量 PATH 的值
    os.environ["MY_VAR"] = "value"  # 设置环境变量
    

(3) 进程控制

  • 运行外部命令:

    os.system("ls -l")      # 在终端执行命令(返回退出状态码)
    os.popen("date").read() # 执行命令并获取输出(返回文件对象)
    
  • 更高级的进程管理(推荐用 subprocess 模块替代):

    import subprocess
    subprocess.run(["ls", "-l"], check=True)  # 更安全的替代方案
    
  • 获取进程信息:

    os.getpid()    # 当前进程 ID
    os.getppid()   # 父进程 ID
    

(4) 文件权限与属性

  • 修改文件权限:

    os.chmod("file.txt", 0o755)  # 设置权限为 rwxr-xr-x
    
  • 获取文件信息:

    os.stat("file.txt")  # 返回文件状态(大小、修改时间等)
    

(5) 系统信息

  • 获取系统相关常量:

    os.name       # 操作系统类型(如 'posix', 'nt', 'java')
    os.uname()    # 系统详细信息(Linux/macOS)
    os.cpu_count()# CPU 核心数
    
  • 路径分隔符:

    os.sep       # 路径分隔符(Windows: '\', Linux/macOS: '/')
    os.pathsep   # 环境变量分隔符(Windows: ';', Linux/macOS: ':')
    

2. 常见用例示例

示例 1:批量重命名文件

import os

directory = "./photos"
for filename in os.listdir(directory):
    if filename.endswith(".jpg"):
        new_name = f"vacation_{filename}"
        os.rename(
            os.path.join(directory, filename),
            os.path.join(directory, new_name)
        )

示例 2:递归删除目录

import os
import shutil  # 更安全的递归删除(替代 os.removedirs)

def delete_dir(path):
    if os.path.exists(path):
        shutil.rmtree(path)  # 删除目录及其所有内容
        print(f"Deleted: {path}")
    else:
        print("Directory does not exist.")

delete_dir("./temp")

示例 3:检查文件是否存在并读取

import os

file_path = "data.txt"
if os.path.exists(file_path):
    if os.path.isfile(file_path):
        with open(file_path, "r") as f:
            print(f.read())
else:
    print("File not found.")

3. 注意事项

  1. 跨平台兼容性

    • 使用 os.path.join() 拼接路径,避免硬编码 /\
    • 优先使用 os.sepos.path 提供的方法处理路径。
  2. 安全性

    • 避免直接使用 os.system() 执行用户输入的命令(可能引发命令注入攻击),推荐用 subprocess.run()
  3. 性能

    • 频繁的文件系统操作可能影响性能,考虑批量处理或缓存结果。
  4. 替代模块

    • 文件路径操作:推荐 pathlib(面向对象,更易读)。
    • 进程管理:推荐 subprocess(更安全、功能更强大)。

4. 总结

os 模块是 Python 中与操作系统交互的“瑞士军刀”,适合处理文件系统、环境变量、进程控制等底层任务。对于更复杂的场景(如路径操作),可以结合 os.pathpathlib 使用。如果是高级进程管理,建议优先选择 subprocess 模块。

posted @ 2025-11-28 10:38  nxhujiee  阅读(6)  评论(0)    收藏  举报