簡體   English   中英

Python:使用Glob查找特定的子文件夾

[英]Python: Using Glob to find specific sub-folder

我想遞歸搜索包含許多子文件夾的文件夾。 一些子文件夾包含一個我想循環瀏覽的特定文件夾。

我熟悉glob.glob方法來查找特定文件:

import glob, os
from os import listdir
from os.path import isfile, join

os.chdir(pathname) #change directory to path of choice
files = [f for f in glob.glob("filename.filetype") if isfile(join(idir, f))]

目錄中的某些子文件夾有一個時間戳(YYYYMMDD),因為它們的名稱都包含相同的文件名。 這些子文件夾中有一些包含名稱的文件夾,我們稱其為“ A”。 我希望創建一個代碼來遞歸地搜索這些“特定子文件夾”中名為“ A”的文件夾。 有沒有一種方法可以使用glob.glob在目錄中查找這些特定的子文件夾?

我知道一個類似的問題: 如何在Python中使用glob.glob模塊搜索子文件夾?

但是此人似乎正在尋找特定文件,而我正在尋找路徑名。

您可以使用os.walk來走樹。 每次迭代都會向您顯示目錄及其直接子目錄,因此測試很簡單。

import os
import re

# regular expression to match YYYYMMDD timestamps (but not embedded in
# other numbers like 2201703011).
timestamp_check = re.compile(re.compile(r"[^\d]?[12]\d3[01]\d[0123]\d")).search

# Option 1: Stop searching a subtree if pattern is found
A_list = []
for root, dirs, files in os.walk(pathname):
    if timestamp_check(os.path.basename(root)) and 'A' in dirs:
        A_list.append(os.path.join(root, A))
        # inplace modification of `dirs` trims subtree search
        del dirs[:]

# Option 2: Search entire tree, even if matches found
A_list = [os.path.join(root, 'A') 
    for root, dirs, files in os.walk(pathname) 
    if timestamp_check(os.path.basename(root)) and 'A' in dirs]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM