我正在使用scandir
库来查找计算机上的所有文件。我想在检查完100条记录后停止循环。如果yield
语句从未被调用,那么我的变量c
永远不会增加,循环也不会停止。我放了一些假的文件名thisfilewontbefound
,永远找不到,因此yield
永远也找不到。为什么c
不递增?你知道吗
from scandir import scandir, walk
import sys
def subdirs(path):
for path, folders, files in walk(path):
for files in scandir(path):
if 'thisfilewontbefound' in files.path:
yield files.path
c = 0
for i in subdirs('C:\\'):
if c > 100:
print "test over"
sys.exit()
c += 1
print i
您的
for
循环正在等待生成器。如果执行yield
,生成器将仅生成值。但是yield
永远不会执行,因为没有这样的文件,所以for
循环将等待很长时间,直到C:
驱动器上的所有文件都被扫描,并且生成器结束时不会产生任何结果。你知道吗要么把计数器放在生成器中,要么不要过滤生成器中的文件,让它更频繁地生成。你知道吗
相关问题 更多 >
编程相关推荐