我创建了一个列表,其中包含我希望通过目录C:\和D:\获取的特定扩展名。但我在获取多个文件时遇到问题。如果我只是将'python.exe'放在列表中并删除'Hearthstone.exe',它就可以找到并打印并将其附加到VIP_files列表中。但是一旦我添加'Hearthstone.exe'没有任何反应,甚至没有给出'python.exe'路径。这就是我所拥有的,我不确定我做错了什么。
import os
from os.path import join
lookfor = ['python.exe','Hearthstone.exe']
VIP_files = []
for root, dirs, files in os.walk('C:\\', 'D:\\'):
if lookfor in files:
print ("found: %s" % join(root, lookfor))
VIP_files.append(root+ lookfor)
print(VIP_files)
答案 0 :(得分:1)
lookfor
是一个列表,files
也是如此。您在if
中要求python执行的操作是检查列表是否在列表中,例如[['python.exe','Hearthstone.exe'], ...]
,这当然不存在。
快速解决方法是让lookfor
成为一个集合,然后使用这样的集合交集:
import os
from os.path import join
lookfor = {'python.exe','Hearthstone.exe'} # {} set syntax
VIP_files = []
for root, dirs, files in os.walk('C:\\', 'D:\\'):
found = lookfor.intersection(files)
for f in found:
print("found: {}".format(root + f))
VIP_files.append(root + f)
print(VIP_files)