在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:

我想在python中迭代一个文件夹中的所有文件

此外,假定文件夹正在增长,即文件以异步方式添加到其中。每当我迭代时,我都在做一些操作

因此,假设该操作所花费的时间超过了下载速度,这意味着我不会在下载结束之前完成迭代

如果有任何方法可以做到这一点,请提出建议。你总是可以重新开始,所以请不要建议这种方法

目前我正在做这样的事情:

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

也许这会给你一些想法。

也许保留一套你访问过的所有文件?发布一些代码,展示您尝试过的一些解决方案。我已经编辑并添加了用于遍历文件夹的代码。