【发布时间】:2015-05-25 15:12:27
【问题描述】:
python 新手,已经准备好了,希望能帮上忙。
testn1 = {'names':('tn1_name1','tn1_name2','tn1_name3'),'exts':('.log','.txt')}
testn2 = {'names':('tn2_name1'),'exts':('.nfo')}
testnames = {1:testn1,2:testn1}
directory = 'C:\\temp\\root\\'
for subdir in os.listdir(directory):
# check if name of sub directory matches the name in any of the dicts in testnames[testn*]['names']
if os.path.isdir(os.path.join(directory, subdir)) and [subdir in subdir.lower() in testnames[testn1]['names']]: # this works but need to iterate through all dicts
print(subdir)
# if the a dir name matches do a recursive search for all filenames that exist in the same dict with the corresponding extensions
for dirname, dirnames, filenames in os.walk(os.path.join(directory, subdir)):
for file in filenames:
if file.endswith(testnames[testn1]['exts']): # this works but need to match with corresponding folder
print(file)
我认为我可以做这样的事情,但我确信我对 python 的理解不是必须的。
if os.path.isdir(os.path.join(directory, subdir)) and [subdir in subdir.lower() in [for testnames[key]['names'] in key, value in testnames.items()]]:
我希望保持这种结构,但对任何事情都持开放态度。
编辑:我最终选择了...
if os.path.isdir(os.path.join(directory, subdir)) and [i for i in testnames.values() if subdir.lower() in i['names']]:
感谢 @pzp1997 对 .values() 的提示
【问题讨论】:
标签: python if-statement python-3.x iteration