我想迭代python中文件夹中的所有文件。
此外,假设文件夹正在增长,即文件被异步添加到文件夹中。每当我迭代时,我都在做一些操作。
所以假设该操作所花费的时间不仅仅是下载速度,这意味着在下载结束之前我不会完成迭代。
如果有任何办法,请建议。你可以随时重新开始,所以请不要建议这种方法。
目前我正在做这样的事情:
onlyfiles = [ f for f in listdir(".") if isfile(join(".",f)) ]
for s in onlyfiles:
#dosomething
答案 0 :(得分:0)
我会使用python set
来构建您已经处理过的文件列表,然后在目录中循环多次,直到您感觉自己已经看到所有当前批量文件为止。
类似的东西:
#!/usr/bin/env python
import os
import time
processed = set()
tripsWithNoChange = 0
timeToLetWriterCatchUp = 2
maxNumberOfTrips = 10
while tripsWithNoChange < maxNumberOfTrips:
for root,dirs,files in os.walk('.'):
candidates = set(files)
# remove the files already visited from consideration
candidates.difference_update(processed)
if len(candidates) == 0:
tripsWithNoChange += 1
continue
for f in candidates:
# process file
pass
processed.update(candidates)
time.sleep(timeToLetWriterCatchUp)
此方法中有几个magic
个数字,您需要调整,直到您确信所有文件都已处理完毕,具体为:
也许这会给你一些想法。