查詢某資料夾下所有子資料夾內的py檔案-3一行程式碼搞定

隱士2018發表於2018-10-03

轉自:https://mp.weixin.qq.com/s/FFXh8gRci4hMo6_gnBMPUg

      工作中,有時會產生查詢某一類檔案的需求,比如log檔案。或者在做影像類深度學習時,需要讀取大類資料夾下,所有小類資料夾下的圖片。專門為這個需求寫一個函式太耽誤時間。所以,今天分享一個我工作中遇到的第三方庫imutils,並分享一下我對原始碼的理解。


from imutils import paths


# 要在哪條路徑下查詢

path = `…`


# 查詢圖片,得到圖片路徑

imagePaths = list(imutils.paths.list_images(basePath=path))


# 所有py檔案,得到py檔案路徑

imagePaths = list(imutils.paths.list_files(basePath=path,,validExts=(`.py`)))


# 原始碼解讀

def list_files(basePath, validExts=(“.jpg”, “.jpeg”, “.png”, “.bmp”, “.tif”, “.tiff”), contains=None):

# loop over the directory structure

for (rootDir, dirNames, filenames) in os.walk(basePath):

# loop over the filenames in the current directory

for filename in filenames:

# if the contains string is not none and the filename does not contain

# the supplied string, then ignore the file

if contains is not None and filename.find(contains) == -1:

continue


# determine the file extension of the current file

ext = filename[filename.rfind(“.”):].lower()


# check to see if the file is an image and should be processed

if ext.endswith(validExts):

# construct the path to the image and yield it

imagePath = os.path.join(rootDir, filename).replace(” “, \ )

yield imagePath


引數contains表示找到給定路徑下,給定字尾檔案型別,檔名中包含contains提供欄位的檔案

rfind() 返回字串最後一次出現的位置(從右向左查詢),如果沒有匹配項則返回-1

ext = filename[filename.rfind(“.”):].lower() 將檔案字尾轉換成小寫

ext.endswith(validExts) 匹配字尾,將檔案路徑中的空字串” “,轉化為\ 



轉自:https://mp.weixin.qq.com/s/FFXh8gRci4hMo6_gnBMPUg


相關文章