os模块是Python解释器内置模块之一,顾名思义,可以对系统信息和目录信息进行管理。
本节内容将会梳理os模块常用指令。
使用os模块无需安装,只需要在Python程序开头导入
import os
OS模块对文件路径管理篇
文件路径管理看似容易,听起来只是字符串的拼接分割而已,实则不然。路径管理的最大障碍是不同系统平台的兼容性问题,这点对于跨平台场景十分重要,例如:大型程序编写、在Windows系统下远程连接Linux服务器部署项目等。
举个最简单的例子,对于路径分隔线而言:
- Windows平台使用反斜杠“\”(在手动字符串处理时要注意转义哦)
- Linux、Mac、web中使用正斜杠“/”
对于绝对路径起始标志而言
- Windows系统以盘符开头,例如:“F:\”
- Linux用一个单独的“/”代表根目录,不设分区
凡此种种,不胜枚举。因此借助Python内置模块的跨平台易用特性可以为我们解决许多看似简单实则易错的问题。
这部分命令大多位于os.path包中
文件路径叠加
我们用“‘path1’+'\'+'path2”这种极不优雅的方式很容易出现跨平台不兼容性,更何况诸如path1末尾可能自带一个“\”的话我们还要费时间去分类讨论……因此可以使用
os.path.join(path1,path2)
长路径中拆分文件名
相当于使用最后一个“\”分割路径
os.path.dirname(path) # 返回文件路径
os.path.basename(path) # 返回文件名
os.path.split(path) # 把路径分割成 dirname 和 basename,返回一个元组
从文件名中分割出扩展名
os.path.splitext(path) # 分割路径中的文件名与拓展名
绝对路径相对路径判断与转换
os.path.abspath(path) # 返回绝对路径
os.path.isabs(path) # 判断是否为绝对路径
os.path.relpath(path[, start]) # 从start开始计算相对路径
路径与文件存在性判断
os.path.isfile(path) # 判断路径是否为文件
os.path.isdir(path) # 判断路径是否为目录
os.path.exists(path) # 路径存在则返回True,路径损坏返回False
os.path.islink(path) # 判断路径是否为链接
路径规范化
之前我们提到不同平台路径分隔符不同,但实际使用过程中你可能发现,即使分隔符混杂python解释器时常也能正确获取路径,但我们不妨按照平台要求统一路径风格
os.path.normcase(path) # 转换path的大小写和斜杠
os.path.normpath(path) # 规范path字符串形式
文件目录删除
# 删除文件
os.remove(file_path)
# 删除目录 注意OS模块只能删除空目录
os.rmdir(dir_path)
注意OS模块只能删除空目录,否则会报错。若要删除有文件的目录可以使用shutil模块,我将在之后的博客详细介绍。
shutil.rmtree(dir_path) # 空目录、有内容的目录都可以删
os模块对当前工作目录管理篇
查看当前工作目录
# 查看当前工作目录
os.getcwd() # 返回当前工作目录的 绝对路径
python语言中“当前工作目录”是个很有用的概念,之后的博客也会介绍
更改当前工作目录
# 修改当前工作目录
os.chdir(path)
上述两条命令在编写跨平台程序时十分有用,能让迁移后的程序方便地获取当前工作目录(绝对路径)