我有一个文件名列表,但在目录中它们的名称有点不同。我想打印不在目录中的文件名。文件示例:
FOO_BAR_524B_023D9B01_2021-157T05-34-31__00001_2021-08-30T124702.130.tgz
import os
missing = ['FOO_BAR_524B_023D9B01_2021-157T05-34-31__00001', 'dfiknvbdjfhnv']
for fileName in missing:
for fileNames in next(os.walk('C:\\Users\\foo\\bar'))[2]:
if fileName not in fileNames:
print(fileName)
我不能理解我做错了什么
问题是您迭代目录(
for fileNames in next(os.walk(...))[2]
)中的每个文件,并检查fileName
是否在每个文件名中。对于文件夹中打印fileName not in fileNames
的每个文件,fileName
会导致多次打印只需执行一次检查,查看文件夹中的所有文件是否都不包含目标文件名,即可解决此问题
如果您希望它更高效,并且只查找作为其他名称前缀的文件名,那么可以使用名为trie的数据结构。例如,如果
missing
等于['bcd']
,并且有一个名为abcde
的文件,并且这些文件被认为不匹配,那么trie在这里是合适的相关问题 更多 >
编程相关推荐