os 模块

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

  1. Users/ethan
  2. └── coding
  3. └── python
  4. ├── hello.py - 文件
  5. └── 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 形式返回每一个绝对路径下的文件夹名字;filenames 是以列表 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. []

参考资料