2015-11-02 128 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

其工作..謝謝:) –