Python - 忽略列表中的字符串无效

时间:2018-06-11 10:52:25

标签: python

下面的代码是基于忽略列表编写的选择目录:

mypath = 'c:\\Windows\\help'
ignorelist = ['mui', 'en-US']
for root, directories, filenames in walk(mypath):
    for directory in directories :
        if not any(ignorestring in directory for ignorestring in ignorelist):
            print(join(root,directory))

当ignorelist变量列表为空时,下面是输出:

c:\Windows\help\Corporate
c:\Windows\help\Help
c:\Windows\help\mui
c:\Windows\help\OEM
c:\Windows\help\Windows
c:\Windows\help\Help\en-US
c:\Windows\help\mui\0409
c:\Windows\help\Windows\en-US

在忽略列表中使用[' mui',' en-US']输出为:

c:\Windows\help\Corporate
c:\Windows\help\Help
c:\Windows\help\OEM
c:\Windows\help\Windows
c:\Windows\help\mui\0409

" C:\的Windows \帮助\ MUI \ 0409"即使mui在忽略列表中,也不会被忽略。

请说明为什么会发生这种情况以及如何忽略mui文件夹的所有子目录

1 个答案:

答案 0 :(得分:1)

您需要在path上应用您的条件,而不仅仅是directory

from os.path import join
from os import walk

mypath = 'c:\\Windows\\help'
ignorelist = ['mui', 'en-US']

for root, directories, filenames in walk(mypath):
    for directory in directories:
        path = join(root, directory)
        if not any(ignorestring in path for ignorestring in ignorelist):
            print(path)

c:\Windows\help\Corporate
c:\Windows\help\Help
c:\Windows\help\OEM
c:\Windows\help\Windows