概述
这个模块提供了很多简单方便的方式去调用操作系统开放的功能,至于更高维度的文件,文件夹操作的方法需要参考 shutil 这个模块
在python中,文件名字,命令行参数,环境变量都是字符串。因此一些系统的字符转换就是必须的。可以使用 sys.getfilesystemencoding() 查看系统编码
系统
os.environ
返回环境变量
os.getenv(key)
得到key值的环境变量
os.uname()
相当于Linux的uname,得到系统的信息
1 | >>> os.uname() |
os.getuid
1 | uid, |
os.getgroups()
返回当前进程相关的group
os.getlogin()
得到当前登录的用户
os.popen(cmd,mode=‘r’,buffering=-1)
执行系统级别的命令,但是没有输出。 mode有 read和write两种模式。 但是常见的还是subprocess这个命令
1 | import os |
文件夹操作
os.mkdir(path)
创建一个文件夹
os.rmdir(path)
移除文件夹
os.makedirs(path)
创建一系列文件夹
1 | os.makedirs('test/test/test') |
os.removedirs(path)
移除文件夹,包括子文件夹. 递归移除.如下,先移除最里面的test,然后是外层的test,最后在移除最外面的test
1 | os.removedirs('test/test/test') |
os.chdir(path)
变换路径
文件
os.listdir(path)
列出当前文件夹下面的所有文件和文件夹
os.scandir(path)
扫描当前路径下面的所有文件和文件夹,返回一个DirEntry对象。有以下属性
- name
- path
- is_file
- is_dir
- inode
- is_symlink
os.remove(path)
path是文件的路径,注意,一定得是文件才能够删除。文件夹不能这样删
os.rename(src,dst)
在Unix 中,如果dst是个已经存在的文件,如果用户有权限,那么该文件会被没有提示的替换
在windows中,如果dst已经存在,那么就会出错,即使dst是个文件,而不是文件夹
rename具有移动文件夹(无论文件夹里面是否有文件),并且重命名的功能
1 | >>> os.rename("d://New","d://new_folder") # 重命名 |
os.renames(old,new)
将old层级文件夹全部改名为new的层级文件夹
1 | >>> os.renames("d://new_folder2//test2//test2.txt","d://new_folder2//test1//test1.txt") |
os.walk(path)
返回一个generator对象,分别有三个值: root, dirs, files,
1 | root : 返回当前路径下所有文件夹的路径,字符串 |
os.replace()
这个是跨平台的os.rename
1 | # test1 是存在的文件夹 |