2017-10-17 17 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(パス)の 'for file 'を使わないのですか?それでは、存在しないファイルを読み込もうとする問題に遭遇することはありません。 – DavidG

+3

'list'もキーワードなので、変数名として使用することをお勧めします。 – Sayse

答えて

0

exceptブロックでSystemExit( "File Empty")を使用しないで、print( "File Empty")を使用してください。

0

コードは0100までループしますが、必要ではありません。 pathで指定された ディレクトリ内のエントリの名前を含むリストを返します

os.listdir(パス):listdir

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()) 

そしてノート: あなたのコードは、以下のようなものでなければなりません。リストは任意の順序です。 には特別なエントリ ''が含まれていません。と '..'が存在する場合でも、ディレクトリに が存在しています。

したがってtype(os.listdir('.'))<type 'list'>となり、結果を反復処理できます。

関連する問題