首先我們來一個需求李请,這個函數(shù)接受文件夾的名稱作為輸入?yún)?shù),返回該文件夾中文件的路徑纺座,以及其包含文件夾中文件的路徑息拜。
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中都存在的模塊,如果項目的最終測試環(huán)境不是確定在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)
規(guī)范化路徑。
os.path.splitext(path)
分離文件名與擴展名
os.path.getmtime(path)
返回path所指向的文件或者目錄的最后修改時間
pathlib
自python3開始盐固,加入了pathlib庫
導(dǎo)入庫
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() #刪除文件或目錄(目錄非空觸發(fā)異常)
Path.chmod() #更改路徑權(quán)限, 類似os.chmod()
Path.expanduser() #展開~返回完整路徑對象
Path.mkdir() #創(chuàng)建目錄
Path.rename() #重命名路徑
Path.rglob() #遞歸遍歷所有子目錄的文件
Path.parts #分割路徑 類似os.path.split(), 不過返回元組
path.suffix #文件后綴
path.stem #文件名不帶后綴
path.name #帶后綴的完整文件名
path.parent #路徑的上級目錄