2014-06-09 18 views
0

我想索引,比如說150個文件,這樣os.walk在經過150個文件後終止。限制os.walk到一定數量的文件

例如:
說的第一個文件夾將被索引有20個文件,第二個30,4日10,第5 120,6日22時,「走」應該聚集所有文件夾的總數它會經過每個直到達到150,然後終止。

這不起作用:

import os 
from os.path import join, getsize 

i = 0 
while i <= 150: 
    print(i) 
    for root, dirs, files in os.walk('D:/'): 
     i += 1 
     for f in files: 
      print(f, 'ROOT: ', root, 'DIR: ', dirs) 

請幫助。謝謝你們。

回答

2
i = 0 
j=0 
for root, dirs, files in os.walk('D:/'): 
     i += 1 
     if i > 150: #this is 150 folders (not files) 
      break 
     for f in files: 
      j+= 1 
      if j > 150: #this is 150 files 
       i=151 # force exit the outer loop 
       break 
      print(f, 'ROOT: ', root, 'DIR: ', dirs) 
+1

'我> 150'值不一定意味着150個文件夾深,只是你掃描150個文件夾。 –

+0

是啊,好點抱歉...喬普右編輯:P –

+0

嘿@Joran比斯利。非常感謝你的回答。你能知道我在每次迭代期間如何獲得每個文件的文件大小嗎? – user3719487

3

你需要測試你的檔案號碼os.walk()循環:

i = 150 
for root, dirs, files in os.walk('D:/'): 
    if i <= 0: 
     break 

    for f in files[:i]: 
     i -= 1 
     print(f, 'ROOT: ', root, 'DIR: ', dirs) 

我用的files切片這裏簡化測試爲break只會結束內最活躍的循環。通過倒計時,切片操作被簡化了一點。

過度切片files是完全合法的;如果只有20個項目切片到150個返回項目,則只有20個項目可用。與此同時i由20下降,因此下一個文件夾可以讓你在至多130個文件處理等