下面的代码是基于忽略列表编写的选择目录:
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文件夹的所有子目录
答案 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