python3-过滤os.walk子目录并检索文件名和路径

时间:2018-07-13 02:04:00

标签: python filtering os.walk

我需要帮助来获取特定子目录中文件名和位置的列表。我的目录结构如下:

C:\folder
-->\2014
----->\14-0023
-------->\(folders with files inside)
----->\CLOSED
-------->\14-0055!
----------->\(folders with files inside)
-->\2015
----->\15-0025
-------->\(folders with files inside)
----->\CLOSED
-------->\15-0017!
----------->\(folders with files inside)

仅当文件处于关闭状态时,我才想获取文件及其路径的列表。

我曾尝试编写多个脚本并在SO上搜索问题,但无法提出一些检索所需列表的方法。尽管似乎有与我的麻烦有关的问题,例如Filtering os.walk() dirs and files,但它们与我的要求不完全相同,到目前为止,我仍无法将在SO上找到的代码用于我的目的。

例如,这是另一个SO线程的一些示例代码,我发现我试图适应自己的目的。

l=[]
include_prefixes = ['CLOSED']
for dir, dirs, files in os.walk(path2, topdown=True):
    dirs[:] = [d for d in dirs if d in include_prefixes]
    for file in files:
        l.append(os.path.join(dir,file))

^上面的内容给我一个空白列表...

在几次失败之后,我想只获取正确文件夹路径的列表,并制作另一个脚本在THOSE文件夹中进行迭代。

l=[]
regex = re.compile(r'\d{2}-\d{4}', re.IGNORECASE)
for root, subFolders, files in os.walk(path2):
    try:
        subFolders.remove(regex)
    except ValueError:
        pass
    for subFolder in subFolders:
        l.append(os.path.join(root,subFolder))

^但是我仍然失败,只是获得了目录中的所有文件路径。无论我做什么,我似乎都无法强迫os.walk(a)从其子目录列表中删除特定的子目录,然后(b)使其遍历这些子目录来获取所需的文件名和路径。 / p>

我应该在示例代码中解决什么?还是我应该考虑完全不同的代码?

0 个答案:

没有答案