仅查找特定目录的 os.walk 的所有文件

Find all files with os.walk for a specific directory only

目录树如下所示:

DirA--
     |
     -- Map
     |
     -- Fig--
            |
            --file.png
     |
     -- Data--
              |
              -- file.xls
              |
              -- file.csv

有多个目录,包含多个文件。我想获取仅在 Data 目录中找到的那些文件的完整路径。

这是我目前拥有的:

dirlist = []
thisdir = os.getcwd()

for root, dirs, files in os.walk(thisdir):
    for d in dirs:
        if d.startswith("Data"):
            dirlist.append(os.path.join(root, d))

要仅获取数据目录文件,您需要组合 rootfiles

for root, dirs, files in os.walk(thisdir):
        if "Data" in root: # try using in instead of startswith
           for f in files:
            dirlist.append(os.path.join(root, f))

尝试使用 'dirs' 在 'dirs' 的情况下,您无权访问这些文件。例如,当 rootDirA 时,您的 dirs 列表中将有 --Data--,但您将无法访问 --Data-- 文件夹中的文件。

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

rootdir = os.getcwd()

folder_name = "Data"

def get_files(path):
    onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
    return onlyfiles

def get_search_files(start_path, folder_name):
    for subdir, dirs, files in start_path:
        for x in dirs:
            if x == folder_name:
                data_folder_path = os.path.join(subdir, x)
                dirlist = get_files(data_folder_path)
                return dirlist

dirlist = get_search_files(os.walk(rootdir), folder_name)