python标准库中的模块比较多,对一个python程序员来说,标准库是不得不经常检阅的资料,python语言因有了如此丰富的标准库所以才显得那么耀眼,对我这个python菜鸟而言,python之路还很长,坚持吧,坚持每天都去标准库翻阅一个模块来看看。本文记录os
这个模块的常用方法。
os模块为用户提供一个各种各样的操作系统的一个接口抽象,这里把常用的功能整理如下。
name属性
在python语言中要使用一个模块需要使用import
语句把此模块导进到当前的命名空间里。os
模块中的name
属性打印出当前操作系统所属的平台,类linux系统输出posix
,window用户输出nt
。
1 | In [1]: import os |
uname()
返回当前操作系统的信息,如下:
1 | In [30]: os.uname() |
getcwd()和chdir(path)
getcwd方法是获取当前的工作路径,而chdir方法是切换工作路径,如下:
1 | In [3]: os.getcwd() |
fsencode(filename)和fsdecode(filename)
表示使用文件系统来编码或解码文件名,fsencode方法接收str
,返回bytes
,fsdecode方法接收bytes
,返回str
,如下:
1 | In [7]: encode = os.fsencode('/tmp/jdk.sh') |
getenv(key, default=None)和getenvb(key, default=None)方法
表示获取指定环境变量的值,getenv方法接收str
,返回str
,getenvb方法接收bytes
,返回bytes
,如下:
1 | In [27]: os.getenv('PATH') |
listdir(path=’.’)
返回指定路径下的文件,默认是当前目录,返回的是一个list,如下:
1 | In [5]: os.getcwd() |
mkdir(path, mode=0o777, *, dir_fd=None)和makedirs(name, mode=0o777, exist_ok=False)
mkdir不能递归的创建目录,而makedirs可以递归创建,mode=0o777
与mode=0o775
的效果是一样的,目录的权限都是drwxrwxr-x
,不知道为何?测试如下:
1 | In [24]: os.listdir('/tmp/test') |
再来看看创建目录的权限:
1 | neal@neal-System-Product-Name:test$ pwd |
remove(path, *, dir_fd=None)与removedirs(name)
remove只能删除文件,如果删除的是一个目录会报错,removedirs递归的删除空目录,如果是非空目录,依然会报错,测试如下:
1 | In [35]: os.listdir('/tmp/test/a') |
1 | neal@neal-System-Product-Name:tmp$ pwd |
1 | In [46]: os.removedirs('/tmp/test/a/aa') |
rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)与renames(old, new)
两个方法都表示重命名文件或目录,如果dst的名称已存在,那将会被替换,测试如下:
1 | neal@neal-System-Product-Name:test$ pwd |
1 | In [4]: os.rename('/tmp/test/test1', '/tmp/test/test2') |
两个方法使用方法相似。
更多os模块的方法请看官方文档。