首先我們來一個需求,這個函數接受文件夾的名稱作為輸入參數,返回該文件夾中文件的路徑,以及其包含文件夾中文件的路徑。
def print_dir_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
# 迭代
print_dir_contents(sChildPath)
else:
print(sChildPath)
os.path模塊是在python2和3中都存在的模塊,如果項目的最終測試環境不是確定在py3中,還是建議使用os.path,它還是很簡單適用的。
同時os.path模塊還包括很多屬性,比如說讀取一個文件,但是可能存在文件不存在的情況,一般都是采用try,catch,也可以使用一條語句判斷
os.path.isfile(fname)
列舉幾個
os.path.split(path)
('c:\csv', 'test.csv')
將path分割成目錄和文件名二元組返回。
os.path.commonprefix(list)
返回list中,所有path共有的最長的路徑。
os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False。
os.path.isabs(path)
如果path是絕對路徑,返回True。
os.path.normpath(path)
規范化路徑。
os.path.splitext(path)
分離文件名與擴展名
os.path.getmtime(path)
返回path所指向的文件或者目錄的最后修改時間
pathlib
自python3開始,加入了pathlib庫
導入庫
from pathlib import Path
root = Path("../PycharmProject")
config_dir = root/Path("config")
# 等價于config_dir = os.path.join(root, 'config')
print(str(config_dir))
從這里可以看出pathlib更加簡化
config.files = config_dir.rglob("*.json")
正則匹配文件
Path.iterdir() #遍歷目錄的子目錄或者文件
Path.is_dir() #判斷是否是目錄
Path.glob() #過濾目錄(返回生成器)
Path.resolve() #返回絕對路徑
Path.exists() #判斷路徑是否存在
Path.open() #打開文件(支持with)
Path.unlink() #刪除文件或目錄(目錄非空觸發異常)
Path.chmod() #更改路徑權限, 類似os.chmod()
Path.expanduser() #展開~返回完整路徑對象
Path.mkdir() #創建目錄
Path.rename() #重命名路徑
Path.rglob() #遞歸遍歷所有子目錄的文件
Path.parts #分割路徑 類似os.path.split(), 不過返回元組
path.suffix #文件后綴
path.stem #文件名不帶后綴
path.name #帶后綴的完整文件名
path.parent #路徑的上級目錄