1. os模块常见方法和属性介绍
1.1 操作系统相关
属性函数 | 说明 |
---|---|
os.sep | 输出操作系统特定的路径分隔符(Win下为’\’,Linux下为’/’) |
os.name | 指代当前使用的操作系统(包括:‘posix’, ‘nt’) |
os.curdir | 指代当前目录(’.’) |
os.pardir | 指代上一级目录(’…’) |
os.linesep | 当前平台使用的行终止符(Win下为’\r\n’,Linux下为’\n’) |
1.2 文件/目录相关操作
属性函数 | 说明 |
---|---|
os.chdir(path) | 改变工作目录 |
os.getcwd() | 返回当前工作路径 |
os.listdir(path) | 返回一个包含指定目录下所有文件名(包含目录)的列表 |
os.mkdir(path) | 创建单层目录,如该目录已存在抛出异常。相当于Linux下的mkdir |
os.makedirs(path) | 递归创建多层目录,如该目录已存在抛出异常,相当于Linux下的mkdir -p |
os.rmdir(path) | 删除单层目录,如该目录非空则抛出异常。 |
os.removedirs(path) | 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常 |
os.rename(old, new) | 将文件(目录)old → new,若重命名后的文件名已存在,则重命名失败 |
os.remove(file) | 删除文件 |
os.stat(file) | 获得文件属性 |
os.removedirs
经测试,windows下无法递归删除,Linux下可以。
os.stat
>>> os.stat('1.py')
os.stat_result(
st_mode=33277, st_ino=134428, st_dev=64769, st_nlink=1,
st_uid=1000, st_gid=1000,
st_size=157,
st_atime=1588953907, st_mtime=1588953898, st_ctime=1588953904
)
stat 结构:
st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 文件大小。
st_atime: 上次访问的时间。
st_mtime: 更改时间。(当文件内容更改时,mtime才会更新)
st_ctime: 改变时间。(更改文件任何属性,例如权限等,都会更新ctime)
2. os.path 模块
os.path 模块主要用于获取文件的属性。以下是 os.path 模块的几种常用方法
函数名 | 使用方法 |
---|---|
os.path.basename(path) | 去掉目录路径,返回文件名 |
os.path.dirname(path) | 去掉文件名,返回目录路径 |
os.path.join(path, *paths) | 将path1, path2…各部分组合成一个路径名 |
os.path.split(path) | 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在 |
os.path.splitext(path) | 分离文件名与扩展名,返回(f_name, f_extension)元组 |
os.path.getsize(file) | 返回文件大小 |
os.path.getatime(file) | 返回指定文件最近的访问时间(纪元秒) |
os.path.getctime(file) | 返回指定文件最近改变时间(纪元秒) |
os.path.getmtime(file) | 返回指定文件最近更改时间(纪元秒) |
以下为函数返回 True 或 False
函数 | 使用方法 |
---|---|
os.path.exists(path) | 判断指定路径(目录或文件)是否存在 |
os.path.isabs(path) | 判断指定路径是否为绝对路径 |
os.path.isdir(path) | 判断指定路径是否存在且是一个目录 |
os.path.isfile(path) | 判断指定路径是否存在且是一个文件 |
os.path.islink(path) | 判断指定路径是否存在且是一个符号链接 |
os.path.ismount(path) | 判断指定路径是否存在且是一个挂载点 |
os.path.samefile(path1, paht2) | 判断path1和path2两个路径是否指向同一个文件 |
3. 常用实例
- os.path.realpath(__file__)
os.path.realpath(__file__) 返回__file__所在脚本的绝对路径加文件名。
os.path.dirname(os.path.realpath(__file__)) 返回__file__所在脚本的绝对路径。
与os.getcwd()区别:
os.getcwd()可以理解为当前的执行目录,完全与py文件所在的位置无关。
>>> print(os.path.realpath(__file__))
D:\python练习脚本\043.py
>>> os.path.dirname(os.path.realpath(__file__))
'D:\\python练习脚本'
###切换工作目录后,os.getcwd()返回值也随之变化
>>> os.getcwd()
'D:\\python练习脚本'
>>> os.chdir(r'D:\电影娱乐')
>>> os.getcwd()
'D:\\电影娱乐'
4. os.popen, os.system()区别
Python调用Shell,有两种方法:os.system(cmd)或os.popen(cmd)
两者的区别是:
- os.system(cmd)的返回值是脚本的退出状态码,只会有0(成功),1,2
- os.popen(cmd)返回脚本执行的输出内容作为返回值
https://cloud.tencent.com/developer/article/1486996