在python中的不断增长的文件夹中迭代文件
我想在python中迭代一个文件夹中的所有文件 此外,假定文件夹正在增长,即文件以异步方式添加到其中。每当我迭代时,我都在做一些操作 因此,假设该操作所花费的时间超过了下载速度,这意味着我不会在下载结束之前完成迭代 如果有任何方法可以做到这一点,请提出建议。你总是可以重新开始,所以请不要建议这种方法 目前我正在做这样的事情:在python中的不断增长的文件夹中迭代文件,python,file,python-2.7,directory,Python,File,Python 2.7,Directory,我想在python中迭代一个文件夹中的所有文件 此外,假定文件夹正在增长,即文件以异步方式添加到其中。每当我迭代时,我都在做一些操作 因此,假设该操作所花费的时间超过了下载速度,这意味着我不会在下载结束之前完成迭代 如果有任何方法可以做到这一点,请提出建议。你总是可以重新开始,所以请不要建议这种方法 目前我正在做这样的事情: onlyfiles = [ f for f in listdir(".") if isfile(join(".",f)) ] for s in onlyfiles:
onlyfiles = [ f for f in listdir(".") if isfile(join(".",f)) ]
for s in onlyfiles:
#dosomething
我将使用python
set
s构建一个已经处理过的文件列表,然后在目录中循环多次,直到您满意地看到了当前所有批文件
比如:
#!/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)
#/usr/bin/env python
导入操作系统
导入时间
已处理=设置()
tripsWithNoChange=0
timeToLetWriterCatchUp=2
maxNumberOfTrips=10
当tripsWithNoChange
在这种方法中有几个magic
数字,您需要进行调整,直到您确信所有文件都已处理完毕,特别是:
- tripsWithNoChange
- TimeToNetWriterCachup
- maxNumberOfTrips
也许这会给你一些想法。也许保留一套你访问过的所有文件?发布一些代码,展示您尝试过的一些解决方案。我已经编辑并添加了用于遍历文件夹的代码。