鉴于这段代码:
from glob import glob, iglob
for fn in glob('/*'):
print fn
print ''
for fn in iglob('/*'):
print fn
读取glob的documentation我看到glob()返回一个基本的文件列表,iglob是一个Iterator。但是我能够迭代两者并且每个文件返回相同的文件列表。
我已经阅读了Iterator上的文档,但它还没有真正理解这个主题!
那么返回Iterator的iglob()有什么好处为我提供了glob()的列表?我是否能从我的老朋友那里获得额外的功能?
答案 0 :(得分:21)
文档本身提到了不同之处:
返回一个迭代器,它产生与glob()相同的值,而不是实际同时存储它们。
基本上,list会包含内存中的所有项目。迭代器不需要,因此它需要更少的内存。
答案 1 :(得分:3)
添加到amit's answer。 iglob()在特定情况下很有用,如果您删除列表中的目录,则列表中的文件和文件夹将由glob()存储,因此在循环中进一步访问会引发异常。但是通过使用iglob(),我们可以克服并发修改异常