2015-11-02 103 views
0

我想遍历python文件夹中的所有文件。遍历python中增长文件夹中的文件

此外,给出文件夹正在增长,即文件被异步添加到文件夹中。每当我迭代时,我正在做一些操作。

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

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

目前,我做这样的事情:

onlyfiles = [ f for f in listdir(".") if isfile(join(".",f)) ] 

for s in onlyfiles: 
    #dosomething 
+4

也许保留一组您所访问过的所有文件?发布一些代码,展示您尝试过的一些解决方案 – Erik

+0

我编辑并添加了现在用于遍历文件夹的代码。 –

回答

0

我会使用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) 

有几个magic号码这种方法,直到你确信所有的文件处理,特别是,你将需要调整:

  • tripsWithNoChange
  • timeToLetWriterCatchUp
  • maxNumberOfTrips

也许这会给你一些想法。

+0

其工作..谢谢:) –