鍍金池/ 教程/ Python/ os 模塊
基礎
itertools
HTTP 服務
hashlib
閉包
文件和目錄
單元測試
使用 @property
標準模塊
陌生的 metaclass
Base64
進程、線程和協(xié)程
讀寫二進制文件
匿名函數(shù)
輸入和輸出
Click
元組
字符編碼
partial 函數(shù)
參考資料
collections
協(xié)程
類和實例
Python 之旅
定制類和魔法方法
常用數(shù)據類型
繼承和多態(tài)
ThreadLocal
HTTP 協(xié)議簡介
Requests 庫的使用
讀寫文本文件
列表
os 模塊
迭代器 (Iterator)
正則表達式
集合
上下文管理器
異常處理
你不知道的 super
定義函數(shù)
datetime
資源推薦
字典
slots 魔法
hmac
第三方模塊
進程
類方法和靜態(tài)方法
函數(shù)參數(shù)
高階函數(shù)
函數(shù)
re 模塊
高級特性
線程
argparse
生成器
結束語
字符串
map/reduce/filter
函數(shù)式編程
Celery
裝飾器

os 模塊

Python 的 os 模塊封裝了常見的文件和目錄操作,本文只列出部分常用的方法,更多的方法可以查看官方文檔。

下面是部分常見的用法:

方法 說明
?os.mkdir ?創(chuàng)建目錄
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:獲取文件或目錄的絕對路徑
$ pwd
/Users/ethan/coding/python
$ python
>>> import os                          # 記得導入 os 模塊
>>> os.path.abspath('hello.py')
'/Users/ethan/coding/python/hello.py'
>>> os.path.abspath('web')
'/Users/ethan/coding/python/web'
>>> os.path.abspath('.')                # 當前目錄的絕對路徑
'/Users/ethan/coding/python'
  • os.path.dirname:獲取文件或文件夾的路徑
>>> os.path.dirname('/Users/ethan/coding/python/hello.py')
'/Users/ethan/coding/python'
>>> os.path.dirname('/Users/ethan/coding/python/')
'/Users/ethan/coding/python'
>>> os.path.dirname('/Users/ethan/coding/python')
'/Users/ethan/coding'
  • os.path.basename:獲取文件名或文件夾名
>>> os.path.basename('/Users/ethan/coding/python/hello.py')
'hello.py'
>>> os.path.basename('/Users/ethan/coding/python/')
''
>>> os.path.basename('/Users/ethan/coding/python')
'python'
  • os.path.splitext:分離文件名與擴展名
>>> os.path.splitext('/Users/ethan/coding/python/hello.py')
('/Users/ethan/coding/python/hello', '.py')
>>> os.path.splitext('/Users/ethan/coding/python')
('/Users/ethan/coding/python', '')
>>> os.path.splitext('/Users/ethan/coding/python/')
('/Users/ethan/coding/python/', '')
  • os.path.split:分離目錄與文件名
>>> os.path.split('/Users/ethan/coding/python/hello.py')
('/Users/ethan/coding/python', 'hello.py')
>>> os.path.split('/Users/ethan/coding/python/')
('/Users/ethan/coding/python', '')
>>> os.path.split('/Users/ethan/coding/python')
('/Users/ethan/coding', 'python')
  • os.path.isfile/os.path.isdir
>>> os.path.isfile('/Users/ethan/coding/python/hello.py')
True
>>> os.path.isdir('/Users/ethan/coding/python/')
True
>>> os.path.isdir('/Users/ethan/coding/python')
True
>>> os.path.isdir('/Users/ethan/coding/python/hello.py')
False
  • os.walk

os.walk 是遍歷目錄常用的模塊,它返回一個包含 3 個元素的元祖:(dirpath, dirnames, filenames)。dirpath 是以 string 字符串形式返回該目錄下所有的絕對路徑;dirnames 是以列表 list 形式返回每一個絕對路徑下的文件夾名字;filesnames 是以列表 list 形式返回該路徑下所有文件名字。

>>> for root, dirs, files in os.walk('/Users/ethan/coding'):
...     print root
...     print dirs
...     print files
...
/Users/ethan/coding
['python']
[]
/Users/ethan/coding/python
['web2']
['hello.py']
/Users/ethan/coding/python/web2
[]
[]

參考資料