我写了以下代码:
import fnmatch
ll = []
for items in src:
for file in os.listdir('/Users/swaghccc/Downloads/PulledImages/'):
if fnmatch.fnmatch(file, items.split('/')[-1]):
print file
ll.append(file)
我的src
列表包含图片路径。
类似的东西:
/path/to/image.jpg
这些图像是目录PulledImages
中包含的图像的子集。
匹配图像的打印工作正常。
但是,当我尝试将这些图像名称放入列表ll
时,它需要永远。
我到底在做什么?
答案 0 :(得分:2)
追加不永远。但是,搜索列表需要的时间越长,列表越长;而os.listdir()
作为一个操作系统调用,在对大目录运行时可能会很慢。
为了避免这种情况,请使用字典或集合而不是列表来跟踪要与之比较的名称 - 并在循环外部仅构建一次。
# run os.listdir only once, storing results in a set for constant-time lookup
import sets
files = sets.Set(os.listdir('/Users/swaghccc/Downloads/PulledImages/'))
ll = []
for item in src:
if item.split('/')[-1] in files:
ll.append(file)
社区Wiki,因为如果没有MCVE,我认为这个问题不在主题指南范围内;因此,不接受这个答案的代表/信用。