当前位置: 首页 > web >正文

Python 标准库之 os 模块

Python 的 os 模块提供了与操作系统进行交互的功能,是 Python 标准库中最常用的模块之一。它允许开发者访问和操作文件系统、环境变量、进程管理等底层操作系统功能,使代码能够在不同平台上保持一致的行为。下面将介绍 os 模块的核心功能和常用方法:

一、文件和目录操作

os 模块提供了创建、删除、重命名文件和目录的功能:

python

import os# 目录操作
os.mkdir("new_dir")           # 创建单个目录
os.makedirs("a/b/c")          # 递归创建多级目录
os.rmdir("empty_dir")         # 删除空目录
os.removedirs("a/b/c")        # 递归删除空目录(如果a/b/c为空,则依次删除c、b、a)# 文件操作
os.remove("file.txt")         # 删除文件
os.rename("old.txt", "new.txt")  # 重命名文件# 路径操作
current_dir = os.getcwd()     # 获取当前工作目录
os.chdir("/path/to/dir")      # 切换工作目录
parent_dir = os.path.dirname(current_dir)  # 获取父目录# 检查路径是否存在或类型
exists = os.path.exists("/path/to/file")  # 判断路径是否存在
is_file = os.path.isfile("/path/to/file")  # 判断是否为文件
is_dir = os.path.isdir("/path/to/dir")    # 判断是否为目录

二、路径处理(os.path 子模块)

os.path 提供了跨平台的路径处理功能,避免手动拼接路径导致的错误:

python

import os# 路径拼接(自动处理分隔符)
path = os.path.join("dir", "subdir", "file.txt")  # 在Windows返回 "dir\\subdir\\file.txt",在Linux返回 "dir/subdir/file.txt"# 提取路径组件
dirname = os.path.dirname(path)     # 返回 "dir/subdir"
basename = os.path.basename(path)   # 返回 "file.txt"
root, ext = os.path.splitext(path)  # 返回 ("dir/subdir/file", ".txt")# 绝对路径与相对路径
abs_path = os.path.abspath("file.txt")  # 返回文件的绝对路径
rel_path = os.path.relpath("/a/b/c", "/a")  # 返回 "b/c"# 检查文件修改时间
mtime = os.path.getmtime("file.txt")  # 返回最后修改时间(时间戳)

三、环境变量操作

通过 os.environ 可以访问和修改环境变量:

python

import os# 获取环境变量
home_dir = os.environ.get("HOME")  # 在Linux/macOS获取用户主目录
path = os.environ.get("PATH")      # 获取系统路径变量# 设置环境变量(仅在当前进程有效)
os.environ["MY_VAR"] = "my_value"  # 设置自定义环境变量

四、进程管理

os 模块提供了与进程相关的功能:

pytho

五、系统信息

获取操作系统相关信息:

python

import os# 获取操作系统类型
os_name = os.name          # 返回 'posix' (Linux/macOS) 或 'nt' (Windows)
platform = os.uname()      # 在UNIX系统返回系统信息元组# 其他系统功能
os.urandom(16)             # 生成16字节的加密安全随机数据

六、示例:递归遍历目录

结合 os.walk() 和 os.path 可以高效遍历目录树:

python

import osfor root, dirs, files in os.walk("."):  # 从当前目录开始递归遍历print(f"当前目录: {root}")print(f"子目录: {dirs}")print(f"文件: {files}")print("-" * 20)

七、注意事项

  1. 跨平台兼容性:部分功能(如 os.uname())仅在特定系统上可用,使用前需检查 os.name
  2. 权限问题:文件操作可能因权限不足而失败,需捕获 PermissionError
  3. 路径分隔符:避免手动使用 / 或 \,而是用 os.path.join() 拼接路径。
  4. 推荐替代模块
    • 文件路径处理:使用 pathlib 模块(Python 3.4+)。
    • 执行外部命令:使用 subprocess 模块替代 os.system()

总结

os 模块是 Python 与操作系统交互的基础工具,适用于文件系统操作、环境变量管理和进程控制。对于更高级的文件路径处理,推荐使用 pathlib 模块;对于复杂的命令执行,推荐使用 subprocess 模块。掌握这些模块能显著提升代码的可移植性和健壮性。

http://www.xdnf.cn/news/13770.html

相关文章:

  • Vue + element实现电子围栏功能, 根据省市区选择围栏, 自定义围栏 ,手动输入地名围栏, 保存围栏,清除围栏,加载围栏,批量检测标点是否在围栏内。
  • Chapter05-SSRF
  • Nodejs特训专栏-基础篇:1. Node.js环境搭建与项目初始化详细指南
  • Conda 安装 nbextensions详细教程
  • C++编程语言:标准库:STL容器(Bjarne Stroustrup)
  • 2025【证券从业】时间事件
  • CHI 总线协议及一致性总线相关的 NOC
  • c/c++ 汇编码中的.cfi 指令有什么用途?
  • (LeetCode 每日一题) 3423. 循环数组中相邻元素的最大差值 (数组)
  • Java面试避坑指南:牛客网最新高频考点+答案详解
  • Mac电脑-Office 2024 长期支持版 PPT、Excel、Word(Mac中文)
  • RabbitMQ实现异步消息监听机制
  • Makefile 学习笔记
  • 无外接物理显示器的Ubuntu系统的远程桌面连接(升级版)
  • C#学习第30天: 匹配模式
  • 大模型技术30讲-5-利用数据来减少过拟合现象
  • Next.js + Supabase = 快速开发 = 高速公路
  • 怎样下载某个SCI期刊的endnote style?答:直接去endnote官网搜索期刊名称并下载即可
  • JMeter + 命令行服务器端压测全流程详解
  • 风控系统中,要调用第三方服务获取信息,很慢,如何解决?
  • vue3项目移动端实现进度条可手动滑动控制进度和点击控制进度
  • Docker入门篇--从安装到使用
  • 【Linux手册】从「程序」到「进程」:计算机世界的运行机制
  • 智慧养老与数字健康:科技赋能老年生活,构建全方位养老体系
  • Redis核心数据结构详解与应用
  • arduino通过控制器,精准控制24V电动轮毂转动
  • 解锁Scrapy爬虫:从入门到实战的Python秘籍
  • 图像分割技术:像素级的精准识别(superior哥深度学习系列第12期)
  • 关于MySql深分页的问题及优化方案
  • 软件测试的艺术与科学:构建商业级产品的优雅草卓伊凡