Pythonでの「File does not exist(ファイルが存在しない)」ことについて解説しています。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■ファイルが存在するかどうかを確認する
ファイルが存在するかどうかを確認してみます。
■コード
import os.path print(os.path.exists(r"C:\Users\user_\test\test.txt"))
今回ファイルが存在するかどうかを確認するために、os.pathモジュールを使用します。importでos.pathモジュールを呼び出します。ちなみにosモジュールはPythonの標準ライブラリです。
呼び出した後に、os.path.exists()関数を使用します。os.path.exists()関数の括弧内には、ファイルが存在するかどうかを確認するためにファイルを渡します。渡された情報を元に確認が行われた存在するかどうかの情報が返されます。
返された情報をprint関数で出力します。
なお、今回ファイルが存在するかどうかを確認するファイル(test.txt)は、フォルダ(C:\Users\user_\test)内には存在しません。
■実行
このスクリプトを「file_check.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行させてみると、os.pathモジュールを呼び出しos.path.exists()関数を使用したことで、ファイルが存在するかどうかの確認が行われ、「False(偽)」と返されました。False(偽)は、ファイルが存在しないことを意味します。
■ファイルを読み込んでファイルが存在しないかチェックする(例外処理,try-except)
次に例外処理を用いて、ファイルを読み込んでファイルが存在しないかチェックしてみます。
■コード
try: with open(r"C:\Users\user_\test\test.csv") as f: print("ファイルが存在する") except FileNotFoundError: print("ファイルが存在しません")
例外処理(try-except)を用いる場合は、tryにwith構文を使いopen()関数でファイルを開きます。そしてprint関数で「ファイルが存在する」という文字列を出力します。
次にexceptにFileNotFoundErrorというエラーが(例外が発生)した時の処理を記述します。今回の処理は、print関数で「ファイルが存在しません」という文字列を出力します。
なお、今回ファイルが存在するかどうかを確認するファイルは、フォルダ(C:\Users\user_\test)内に「test.csv」というcsv形式のファイルを用意しました。
■実行
このスクリプトを「file_check_2.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行させてみると、例外処理(try-except)を用いたことで、指定したファイルが存在し、開くことができたので、例外は発生せず、tryの処理が実行され、print関数で「ファイルが存在しません」という文字列が出力されました。
■IOError file does not exist(ファイルが存在しません)
次に、IOError file does not exist(ファイルが存在しません)というエラーを出力してみます。
■コード
try: with open(r"C:\Users\user_\test\test.csv") as f: print("ファイルが存在する") except IOError: print("ファイルが存在しません")
例外処理(try-except)を用い、tryにwith構文を使いopen()関数でファイルを開きます。そしてprint関数で「ファイルが存在する」という文字列を出力します。
次にexceptにIOErrorというエラーが(例外が発生)した時の処理を記述します。今回の処理は、print関数で「ファイルが存在しません」という文字列を出力します。
なお、今回ファイルが存在するかどうかを確認するファイルは、フォルダ(C:\Users\user_\test)内に「test.csv」というcsv形式のファイルは存在しません。
■実行
このスクリプトを「file_check_6.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行させてみると、例外処理(try-except)を用いたことで、指定したファイルが存在せず、開くことができないので、例外が発生。exceptの処理(IOErrorというエラー)が実行され、print関数で「ファイルが存在しません」という文字列が出力されました。
■ファイルが存在するかどうかを、pathlibモジュールを使用し確認する
次にファイルが存在するかどうかを、pathlibモジュールを使用し確認してみます。
■コード
import pathlib path = pathlib.Path(r"C:\Users\user_\test\test.txt") path.exists() print(path.is_file())
pathlibモジュールを使用し確認する場合は、importでpathlibモジュールを呼び出します。呼び出した後に、pathという変数を作成し、その中でpathlib.Path()関数を使用します。pathlib.Path()関数の括弧内には、引数,パラメーターとして、ファイルが存在するかどうかを確認するためファイルのパスを渡します。その後、格納します。
格納後、exists()関数を使用します。この関数でファイルが存在するかどうかを確認します。
確認後、is_file()関数を使用し、ファイルが発見できたのかの結果を返します。返した結果をprint関数で出力します。
なお、ファイルが存在するかどうかを確認するファイル(test.txt)は、フォルダ(C:\Users\user_\test)内には存在しません。
■実行
このスクリプトを「file_check_3.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行させてみると、pathlibモジュールを呼び出し、exists()関数とis_file()関数を使用したことにより、引数,パラメーターとして渡したファイルが確認されて、ファイルが存在しないことが判明し、「False(偽)」と返されました。False(偽)は、ファイルが存在しないことを意味します。
■ファイルが存在しないというエラーを表示させてみる
次にファイルが存在しないというエラーを表示させてみます。
■コード
file = open(r"C:\Users\user_\test\test.txt") print(file.read()) file.close()
ファイルが存在しないというエラーを表示させるために、fileという変数を作成し、その中でopen()関数を使用します。open()関数の括弧内には引数,パラメーターとして、存在するかどうかを確認するファイルを渡します。
その後、read()関数を使用し、file変数内のファイルを読み込んでみます。読み込んだデータをprint関数で出力してみます。
出力後、close()関数でfile変数内のファイルを閉じます。
なお、ファイルが存在するかどうかを確認するファイル(test.txt)は、フォルダ(C:\Users\user_\test)内には存在しません。
■実行
このスクリプトを「file_check_4.py」という名前で保存し、コマンドプロンプトから実行してみます。
Traceback (most recent call last): File “file_check_4.py”, line 1, in <module> file = open(r”C:\Users\user_\test\test.txt”) FileNotFoundError: [Errno 2] No such file or directory: ‘C:\\Users\\user_\\test\\test.txt’
実行させてみると、open()関数を使用し、指定したファイルを開き、read()関数でファイルの読み込んだ際に、ファイルが存在しないため、「FileNotFoundError: [Errno 2] No such file or directory」というエラーが出力されました。
■存在しないファイルを呼び出す
次に、存在しないファイルを呼び出してみます。
■コード
import os if not os.path.isfile(r"C:\Users\user_\test\test.txt"): raise FileNotFoundError
存在しないファイルを呼び出すために、osモジュールをimportで呼び出します。
呼び出した後に、if not演算子を使用し、True(真)であればFalse(偽)、False(偽)の場合はTrue(真)を返すようにします。os.path.isfile()関数を使用し、os.path.isfile()関数の括弧内には引数,パラメーターとして、ファイルを渡します。これでファイルが存在するかどうかの確認が行われます。
渡したファイルが存在しない場合に、意図的に例外を発生させるraiseを使用し、FileNotFoundErrorというエラーを発生させます。
なお、ファイルが存在するかどうかを確認するファイル(test.txt)は、フォルダ(C:\Users\user_\test)内には存在しません。
■実行
このスクリプトを「file_check_5.py」という名前で保存し、コマンドプロンプトから実行してみます。
Traceback (most recent call last):
File “file_check_5.py”, line 3, in <module>
raise FileNotFoundError
FileNotFoundError
実行させてみると、os.path.isfile()関数に引数,パラメーターとして渡したファイルがチェックされ、存在しないことが判明し、raiseにより意図的に例外が発生し、FileNotFoundErrorというエラーが出力されました。
コメント