20221208星期四:
# os方式一:通過遞歸調用,拿到所有文件,或者指定結尾的文件:
# os方式二:通過 os.walk ,拿到目錄下所有的目錄及文件:
# pathlib方式三:通過 rglob 方法:獲取文件夾下(以及子文件夾)所有文件,返回文件路徑列表;
# pathlib方式四:同上,使用列表推導式方式:
pathlib方式五:通過 glob 方法:獲取文件夾下(不含子文件夾)所有文件,返回文件路徑列表;
import os
from pathlib import Path
path = r'F:\filePath'
# os方式一:
# 通過遞歸調用,拿到所有文件,或者指定結尾的文件:
# os方式一:
# 通過遞歸調用,拿到所有文件,或者指定結尾的文件:
listfileAll = []
def getAllDirRE(path):
# 得到當前目錄下的所有目錄及文件:
filesList = os.listdir(path)
# 處理每一個文件:
for fileName in filesList:
# 判斷是否是路徑(用絕對路徑):
fileabsPath = os.path.join(path,fileName)
if os.path.isdir(fileabsPath):
# 遞歸調用:
getAllDirRE(fileabsPath)
else:
# 拿到 .xlsx 結尾的文件:
if fileName.endswith(".xlsx"):
listfileAll.append(fileabsPath)
getAllDirRE(path)
print('listfileAll:',len(listfileAll),listfileAll)
# os方式二:
# 通過 os.walk ,拿到目錄下所有的目錄及文件:
# os方式二:
# 通過 os.walk ,拿到目錄下所有的目錄及文件:
pathWalk = os.walk(path)
listWalkAll = []
for root,dirs,files in pathWalk:
"""root: F:\filePath
root: F:\filePath\fileNew
root: F:\filePath\fileNew\fileThre
"""
# print('root:',root)
# 篩除空的列表:
if files:
for i in files:
# 篩選 .xlsx 文件,且不為 __init__.py:
if i.endswith('.xlsx') and i != '__init__.py':
listWalkAll.append(os.path.join(root,i))
print('listWalkAll:',len(listWalkAll),listWalkAll)
# pathlib方式三:
# 通過 rglob 方法:獲取文件夾下(以及子文件夾)所有文件,返回文件路徑列表;
# pathlib方式三:
# 通過 rglob 方法:獲取文件夾下(以及子文件夾)所有文件,返回文件路徑列表;
folder = Path(path.strip())
result = folder.rglob(f"*.*") # 也可以寫成 result = list(folder.rglob(f"*.*"))
# result: <class 'generator'> <generator object Path.rglob at 0x000002227CCC82E0>
print('result:',type(result),result)
result01 = []
for i in result:
# i: <class 'pathlib.WindowsPath'> F:\filePath\anaconda鏡像下載.txt
# print('i:',type(i),i)
result01.append(str(i))
# result01: <class 'list'> 10
print('result01:',type(result01),len(result01),result01)
# pathlib方式四:
# 使用列表推導式方式:
# 通過 rglob 方法:獲取文件夾下(含子文件夾)所有文件,返回文件路徑列表;
# pathlib方式四:
# 使用列表推導式方式:
# 通過 rglob 方法:獲取文件夾下(含子文件夾)所有文件,返回文件路徑列表;
result02 = [str(f) for f in folder.rglob("*.*") if Path(f).is_file()]
# result01: <class 'list'> 10
print('result02:',type(result02),len(result02),result02)
# pathlib方式五:
# 使用列表推導式方式:
# 通過 glob 方法:獲取文件夾下(不含子文件夾)所有文件,返回文件路徑列表;
# pathlib方式五:
# 使用列表推導式方式:
# 通過 glob 方法:獲取文件夾下(不含子文件夾)所有文件,返回文件路徑列表;
# 即,子文件的文件不會獲取
result03 = [str(f) for f in folder.glob("*.*") if Path(f).is_file()]
# result01: <class 'list'> 5
print('result03:',type(result03),len(result03),result03)
"""
相對于傳統的os及os.path,pathlib具體如下優勢:
pathlib實現統一管理,解決了傳統操作導入模塊不統一問題;
pathlib使得在不同操作系統之間切換非常簡單;
pathlib是面向對象的,路徑處理更靈活方便,解決了傳統路徑和字符串并不等價的問題;
pathlib簡化了很多操作,簡單易用。
"""
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!