转自:极客学院
Python 的 os 模块封装了常见的文件和目录操作,本文只列出部分常用的方法,更多的方法可以查看官方文档。
下面是部分常见的用法:
方法 | 说明 |
---|---|
os.mkdir | 创建目录 |
os.rmdir | 删除目录 |
os.rename | 重命名 |
os.remove | 删除文件 |
os.getcwd | 获取当前工作路径 |
os.walk | 遍历目录 |
os.path.join | 连接目录与文件名 |
os.path.split | 分割文件名与目录 |
os.path.abspath | 获取绝对路径 |
os.path.dirname | 获取路径 |
os.path.basename | 获取文件名或文件夹名 |
os.path.splitext | 分离文件名与扩展名 |
os.path.isfile | 判断给出的路径是否是一个文件 |
os.path.isdir | 判断给出的路径是否是一个目录 |
例子
后文的例子以下面的目录结构为参考,工作目录为 /Users/ethan/coding/python
。
Users/ethan
└── coding
└── python
├── hello.py - 文件
└── web - 目录
看看例子:
- os.path.abspath:获取文件或目录的绝对路径
1 $ pwd 2 /Users/ethan/coding/python 3 $ python 4 >>> import os # 记得导入 os 模块 5 >>> os.path.abspath('hello.py') 6 '/Users/ethan/coding/python/hello.py' 7 >>> os.path.abspath('web') 8 '/Users/ethan/coding/python/web' 9 >>> os.path.abspath('.') # 当前目录的绝对路径 10 '/Users/ethan/coding/python'
- os.path.dirname:获取文件或文件夹的路径
1 >>> os.path.dirname('/Users/ethan/coding/python/hello.py') 2 '/Users/ethan/coding/python' 3 >>> os.path.dirname('/Users/ethan/coding/python/') 4 '/Users/ethan/coding/python' 5 >>> os.path.dirname('/Users/ethan/coding/python') 6 '/Users/ethan/coding'
- os.path.basename:获取文件名或文件夹名
1 >>> os.path.basename('/Users/ethan/coding/python/hello.py') 2 'hello.py' 3 >>> os.path.basename('/Users/ethan/coding/python/') 4 '' 5 >>> os.path.basename('/Users/ethan/coding/python') 6 'python'
- os.path.splitext:分离文件名与扩展名
1 >>> os.path.splitext('/Users/ethan/coding/python/hello.py') 2 ('/Users/ethan/coding/python/hello', '.py') 3 >>> os.path.splitext('/Users/ethan/coding/python') 4 ('/Users/ethan/coding/python', '') 5 >>> os.path.splitext('/Users/ethan/coding/python/') 6 ('/Users/ethan/coding/python/', '')
- os.path.split:分离目录与文件名
1 >>> os.path.split('/Users/ethan/coding/python/hello.py') 2 ('/Users/ethan/coding/python', 'hello.py') 3 >>> os.path.split('/Users/ethan/coding/python/') 4 ('/Users/ethan/coding/python', '') 5 >>> os.path.split('/Users/ethan/coding/python') 6 ('/Users/ethan/coding', 'python')
- os.path.isfile/os.path.isdir
1 >>> os.path.isfile('/Users/ethan/coding/python/hello.py') 2 True 3 >>> os.path.isdir('/Users/ethan/coding/python/') 4 True 5 >>> os.path.isdir('/Users/ethan/coding/python') 6 True 7 >>> os.path.isdir('/Users/ethan/coding/python/hello.py') 8 False
- os.walk
os.walk 是遍历目录常用的模块,它返回一个包含 3 个元素的元祖:(dirpath, dirnames, filenames)。dirpath 是以 string 字符串形式返回该目录下所有的绝对路径;dirnames 是以列表 list 形式返回每一个绝对路径下的文件夹名字;filesnames 是以列表 list 形式返回该路径下所有文件名字。
1 >>> for root, dirs, files in os.walk('/Users/ethan/coding'): 2 ... print root 3 ... print dirs 4 ... print files 5 ... 6 /Users/ethan/coding 7 ['python'] 8 [] 9 /Users/ethan/coding/python 10 ['web2'] 11 ['hello.py'] 12 /Users/ethan/coding/python/web2 13 [] 14 []