Python的os模块的一些常见文件和目录操作

时间:2022-01-04 23:58:39

转自:极客学院

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 []