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

Python os 模块:系统操作的 “百宝箱”

目录

前言

一、文件与目录操作

1. 目录切换与获取

2. 目录与文件创建 / 删除

3. 文件与目录检查

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

1. 路径拼接与拆分

2. 扩展名与绝对路径

三、环境变量与系统信息

1. 环境变量操作

2. 系统信息

四、文件与目录遍历

1. 列出目录内容

2. 递归遍历目录树

五、文件权限与时间戳

1. 文件权限操作(Unix 系统)

2. 文件时间戳

六、安全与健壮的文件操作

1. 安全创建目录(避免目录已存在的错误)

2. 安全删除文件 / 目录

七、跨平台注意事项

路径分隔符:

系统差异:

总结


前言

在 Python 中,os模块是与操作系统交互的核心工具,提供了文件操作、路径处理、进程管理等功能。本文将梳理os模块的常用方法,帮你高效处理系统相关任务。

一、文件与目录操作

1. 目录切换与获取

方法功能描述示例
os.getcwd()获取当前工作目录路径print(os.getcwd()) → '/home/user/project'
os.chdir(path)切换当前工作目录os.chdir('/tmp') → 切换到/tmp目录

2. 目录与文件创建 / 删除

方法功能描述示例
os.mkdir(path)创建单层目录(目录已存在则报错)os.mkdir('new_dir') → 创建new_dir目录
os.makedirs(path)递归创建多层目录(自动创建父目录)os.makedirs('a/b/c') → 创建a/b/c目录树
os.rmdir(path)删除空目录(目录非空则报错)os.rmdir('empty_dir') → 删除空目录
os.remove(path)删除文件os.remove('test.txt') → 删除test.txt
os.removedirs(path)递归删除空目录(从子目录向上删)os.removedirs('a/b/c') → 若a/b/c均为空,逐级删除

3. 文件与目录检查

方法功能描述示例
os.path.exists(path)判断路径(文件或目录)是否存在os.path.exists('test.txt') → True/False
os.path.isfile(path)判断路径是否为文件os.path.isfile('test.txt') → True
os.path.isdir(path)判断路径是否为目录os.path.isdir('/tmp') → True
os.path.getsize(path)获取文件大小(字节)os.path.getsize('test.txt') → 1024

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

1. 路径拼接与拆分

方法功能描述示例
os.path.join(path1, path2, ...)智能拼接路径(自动处理分隔符)os.path.join('/tmp', 'a', 'b.txt') → '/tmp/a/b.txt'
os.path.split(path)将路径拆分为 (目录,文件名) 元组os.path.split('/tmp/a/b.txt') → ('/tmp/a', 'b.txt')
os.path.dirname(path)获取路径中的目录部分os.path.dirname('/tmp/a/b.txt') → '/tmp/a'
os.path.basename(path)获取路径中的文件名部分os.path.basename('/tmp/a/b.txt') → 'b.txt'

2. 扩展名与绝对路径

方法功能描述示例
os.path.splitext(path)拆分文件名与扩展名os.path.splitext('a/b.txt') → ('a/b', '.txt')
os.path.abspath(path)获取绝对路径os.path.abspath('test.txt') → '/home/user/test.txt'
os.path.relpath(path, start)获取相对路径os.path.relpath('/tmp/a', '/tmp') → 'a'

三、环境变量与系统信息

1. 环境变量操作

方法功能描述示例
os.environ获取当前环境变量字典print(os.environ['PATH']) → '/usr/bin:/bin:...'
os.getenv(key, default=None)获取指定环境变量值(不存在则返回默认值)os.getenv('HOME', '/tmp') → '/home/user'
os.putenv(key, value)设置环境变量(不推荐,建议用 os.environ)os.environ['MY_VAR'] = '123' → 设置环境变量

2. 系统信息

方法功能描述示例
os.name获取操作系统类型('posix', 'nt' 等)print(os.name) → 'posix' (Linux/Mac)
os.system(command)执行系统命令(返回命令退出状态码)os.system('ls -l') → 执行ls -l命令
os.getpid()获取当前进程 IDprint(os.getpid()) → 12345
os.getuid()获取当前用户 ID(Unix 系统)print(os.getuid()) → 1000
os.getgid()获取当前用户组 ID(Unix 系统)print(os.getgid()) → 1000

四、文件与目录遍历

1. 列出目录内容

方法功能描述示例
os.listdir(path='.')返回目录下的所有文件和目录名列表os.listdir('/tmp') → ['a', 'b.txt', 'c.log']
os.scandir(path='.')返回迭代器(含文件 / 目录信息对象)with os.scandir('.') as entries: ...

2. 递归遍历目录树

# os.walk(top_dir):返回三元组 (目录路径, 子目录名列表, 文件名列表) 的生成器
for root, dirs, files in os.walk('/home/user'):for file in files:print(os.path.join(root, file))  # 打印所有文件的完整路径

五、文件权限与时间戳

1. 文件权限操作(Unix 系统)

方法功能描述示例
os.chmod(path, mode)修改文件权限(如 0o755 表示 rwxr-xr-x)os.chmod('script.sh', 0o755) → 赋予执行权限
os.chown(path, uid, gid)修改文件所有者和组(需 root 权限)os.chown('file.txt', 1000, 1000) → 改为用户1000

2. 文件时间戳

方法功能描述示例
os.path.getatime(path)获取文件最后访问时间(时间戳)print(os.path.getatime('test.txt')) → 1620000000.0
os.path.getmtime(path)获取文件最后修改时间(时间戳)print(os.path.getmtime('test.txt')) → 1620000001.0
os.path.getctime(path)获取文件创建时间(Unix 为 inode 更改时间)print(os.path.getctime('test.txt')) → 1620000002.0

六、安全与健壮的文件操作

1. 安全创建目录(避免目录已存在的错误)

# 方法1:先检查后创建
if not os.path.exists('new_dir'):os.mkdir('new_dir')# 方法2:用exist_ok参数(Python 3.2+)
os.makedirs('a/b/c', exist_ok=True)  # 目录已存在也不报错

2. 安全删除文件 / 目录

# 安全删除文件(不存在也不报错)
try:os.remove('test.txt')
except FileNotFoundError:pass# 递归删除目录(等价于rm -rf)
import shutil
shutil.rmtree('dir_to_delete')

七、跨平台注意事项

  1. 路径分隔符

    • Windows 使用反斜杠\,Unix/Linux/Mac 使用正斜杠/
    • 推荐用os.path.join()自动处理,避免硬编码:

      # 正确:跨平台兼容
      path = os.path.join('data', 'file.txt')  # Linux: 'data/file.txt',Windows: 'data\\file.txt'# 错误:Windows不兼容
      path = 'data/file.txt'
      

  2. 系统差异

    • os.system()执行的命令可能因系统而异(如 Windows 的dir vs Unix 的ls)。
    • 文件权限、用户 ID 等概念在 Windows 和 Unix 上差异较大,需谨慎使用。

总结

os模块是 Python 与操作系统交互的桥梁,掌握其常用方法能大幅提升文件处理、系统管理的效率。本文覆盖了核心功能:

  • 文件与目录操作:创建、删除、检查
  • 路径处理:拼接、拆分、获取绝对路径
  • 环境变量与系统信息:获取环境变量、执行系统命令
  • 遍历目录树:递归查找文件和目录
  • 文件权限与时间戳:修改权限、获取时间信息

建议收藏本文作为速查表,遇到系统相关操作时优先查阅os模块,避免重复造轮子。

http://www.dtcms.com/a/286788.html

相关文章:

  • Java编程规范(简约版)
  • MoE,混合专家
  • pycharm结构查看器
  • 世界有色金属杂志世界有色金属杂志社世界有色金属编辑部2025年第9期目录
  • WAF能够解决数据库被渗透的问题吗?
  • Redis-集群与分区
  • 5W8-3D牢游戏超级大集合[2012年6月] 地址 + 解压密码
  • 更适合后端宝宝的前端三件套之HTML
  • 光伏系统优化布局,实现从空间利用到效能的最大化
  • 2-大语言模型—理论基础:详解Transformer架构的实现(2)
  • Redisson 分布式锁
  • 一小时学习Redis
  • 使用 jar -xvf 解压JAR文件无反应怎么办?
  • Maven私服仓库,发布jar到私服仓库,依赖的版本号如何设置,规范是什么
  • 帆软可视化图
  • mave手动下载某个依赖,到本地库
  • 更适合后端宝宝的前端三件套之JavaScript
  • /字符串/
  • 《每日AI-人工智能-编程日报》--2025年7月18日
  • Simulink 按位控制的控制DO信号变量转换为uint16类型的控制字
  • Flux Kontext Lora 模型训练环境搭建
  • 软件维护全维度解析:从修复到进化的生命周期管理
  • linux制作镜像、压缩镜像、烧录的方法
  • 虚拟机centos服务器安装
  • Linux操作系统(练习一)
  • InnoDB 多版本控制 慢sql排查(基于MySQL 5.7)
  • Altera Quartus:图形化界面配置生成jic和pof文件
  • 京东店铺入鼎的全面分析与自研难度评估
  • AE MDX L6 L12 L18 电源手侧操作使用说明
  • 智能交通4G专网解决方案,引领智慧出行新时代