2017-10-17 83 views
1

我已經編寫了此代碼來遍歷文件0-100。問題是當日志文件0沒有找到它不會去下一個文件。如何在循環中迭代

我試圖使用return i +1哪些沒有工作,因爲我是新的編碼,我不知道如何進行。如何忽略空文件並繼續下一步。我應該保留一個櫃檯嗎?

import os 

path = "C:\\Users\\Bindu\\Documents\\Thesis\\lfiles\\" 

list = os.listdir(path) # dir is your directory path 
number_files = len(list) 
print(number_files) 
try: 
     for i in range(0, 100): 
     path2 = "data." + str(i) + "\\Log." + str(i) 
     file = path + path2 

     f = open(file) 
     if not os.path.exists(path2): 
      with open(path2) as fi: 
       if not fi.read(3): # avoid reading entire file. 
        print("File is empty") 

except Exception as e: 
    raise SystemExit("File empty") 
+8

爲什麼不在os.listdir(path)中使用'for file:'?那麼你將不會遇到試圖讀取不存在的文件的問題 – DavidG

+3

'list'也是一個關鍵字,所以我建議不要使用它作爲變量名稱。 – Sayse

回答

0

不要在except塊中使用SystemExit(「File Empty」),而應使用print(「File Empty」)。

0

您的代碼在0100之間循環,而沒有必要。 你的代碼應該是象下面這樣:

import os 
import traceback 

path = "C:\\Users\\Bindu\\Documents\\Thesis\\lfiles\\" 

try: 
     for file in os.listdir(path): 
     file = path + file 

     f = open(file) 
     with open(path2) as fi: 
      if not fi.read(3): # avoid reading entire file. 
       print("File is empty") 

except Exception as e: 
    print(traceback.format_exc()) 

和一張紙條上listdir

os.listdir(path)返回包含 目錄中的條目的名稱列表,通過路徑給出。該列表以任意順序排列。它確實不包括特殊條目'。'。和'..',即使它們在目錄中存在 。

所以type(os.listdir('.'))會給<type 'list'>,你可以迭代結果。