2016-11-17 11 views
0

私は彼のネット上でこの質問の答えを高くして低く検索しました。おそらく、それは単にあまりにも具体的すぎるかもしれませんが、ここに行きます。Python FileNotFoundErrorを使用してファイルが見つからない場合はどうすればできますか?

私はPythonのクラッシュコースのテキストを使って作業していますが、おそらくこの時点では高度な初心者か中級の開業医のいずれかとみなされます。

次のように私は、FileNotFoundError例外タイプと例外を使用して、不足しているファイルについてのメッセージを表示するには、try-catchブロックを使用しようとしています

filename_1 = 'cats.txt' 
filename_2 = 'dogs.txt' 

    try: 
     with open(filename_1) as file_obj: 
     contents = file_obj.read() 
     contents = contents.split('\n') 
     print('\n\tContents of File \'cats.txt\':\n') 

     for line in contents: 
      print('\t', line) 

     print('\n') 


     with open(filename_2) as file_obj: 
      contents = file_obj.read() 
      contents = contents.split('\n') 
      print('\n\tContents of File \'dogs.txt\':\n') 

      for line in contents: 
      print('\t', line) 

      print('\n') 
    except FileNotFoundError: 
     print('\n\tSorry, \'', FileNotFoundError.__filename__, '\' not found.\n') 

私はの属性名を使用してみましたファイル名はで、明らかに存在しません。しかし、この重要なデータを抽出するための適切な属性がエラーのために見つかりませんでした。 2つの異なるファイル名が指定されているので、存在しないファイルのいずれかである可能性があります。

Pythonは組み込みの例外でこの種の機能を提供しますか?それはすべきだと思われる。

ご協力いただきまして誠にありがとうございます。ありがとう。

敬具、

ロバートHieger

+0

「試着」と最初の「開封あり」では、インデントが正しくありません。 – Karnage

答えて

2

あなたは例外インスタンスから(ないクラスから)ファイル名を見つけることができます。

try: 
    # your code opening files, etc. 
    # ... 
except FileNotFoundError as not_found: 
    print(not_found.filename) 
+0

'.filename'の存在に関する文書が見つかりましたか? –

+0

それを見つけました:https://docs.python.org/3/library/exceptions.html#OSError –

+0

私は通常、 'pdb.set_trace()'と 'dir(not_found)'を実行して、オブジェクトの属性/メソッド。 – boertel

0

実際の問題は、コードを複製していることです。あなた自身を繰り返さないように、機能を確認し、その後、あなたはすでにファイル名を知っている:

def inspect_file(filename): 
    try: 
     with open(filename) as file_obj: 
      contents = file_obj.read() 
      contents = contents.split('\n') 
      print("\n\tContents of File '%s':\n" % filename) 

      for line in contents: 
       print('\t', line) 

      print('\n') 
    except FileNotFoundError: 
     print("\n\tSorry, '%s' not found.\n" % filename) 

inspect_file('cats.txt') 
inspect_file('dogs.txt') 
0

別のアプローチは、最初の試みの後に他の句を使用して、エラーのいずれかを試してみて、キャッチする、次のようになります。

filename_1 = 'cats.txt' 
filename_2 = 'dogs.txt' 

try: 
    with open(filename_1) as file_obj: 
     # do your thing 

except FileNotFoundError: 
    print('\n\tSorry, \'', filename_1, '\' not found.\n') 

else: 
    try: 
     with open(filename_2) as file_obj: 
      # do your thing 

    except FileNotFoundError: 
     print('\n\tSorry, \'', filename_2, '\' not found.\n') 
関連する問題