通常、ファイルの読み取りおよび書き込みを行う前に、ファイルまたはディレクトリが存在するかどうかを確認する必要があります。そうしないと、一部の処理方法によってプログラム エラーが発生する可能性があります。したがって、操作を実行する前にファイルが存在するかどうかを確認することが最善です。
ここでは、os モジュール、Try ステートメント、pathlib モジュールをそれぞれ使用して、ファイルまたはフォルダーが存在するかどうかを確認する 3 つの方法を紹介します。
1. os モジュールを使用する
os モジュールの os.path.exists() メソッドは、ファイルが存在するかどうかを確認するために使用されます。
ファイルが存在するかどうかを判断する
import os os.path.exists(test_file.txt) #True os.path.exists(no_exist_file.txt) #False
フォルダが存在するかどうかを判断する
import os os.path.exists(test_dir) #True os.path.exists(no_exist_dir) #False
os.path.exists()メソッドを使用して、ファイルとフォルダーは同じです。
実はこの方法にはまだ問題があり、「test_data」というファイルが存在するかどうかを確認したいとしますが、カレントパス下に「test_data」というフォルダがあるため、誤判定が発生する可能性があります。 。この状況を回避するには、次のようにします。
ファイルのみを確認する
import os os.path.isfile("test-data")
このメソッドでは、ファイル "test-data" が存在しない場合は False が返され、それ以外の場合は true が返されます。
ファイルが存在する場合でも、そのファイルの読み取りと書き込みが可能かどうかを判断する必要がある場合があります。
先頭に戻る
ファイルの読み取りおよび書き込みが可能かどうかを確認する
os.access() メソッドを使用して、ファイルの読み取りおよび書き込みが可能かどうかを確認します。
構文:
os.access(path, mode)
path はファイル パス、mode は動作モード、いくつかのタイプがあります:
os.F_OK: ファイルが存在するかどうかを確認します;
os.R_OK: ファイルが読み取り可能かどうかを確認します;
os.W_OK: ファイルが書き込み可能かどうかを確認します;
os.X_OK: ファイルが実行可能かどうかを確認します
このメソッドは、ファイル パスが存在するかどうか、およびさまざまなアクセス モードの権限を判断して True または False を返します。
import os if os.access("/file/path/foo.txt", os.F_OK): print "Given file path is exist." if os.access("/file/path/foo.txt", os.R_OK): print "File is accessible to read" if os.access("/file/path/foo.txt", os.W_OK): print "File is accessible to write" if os.access("/file/path/foo.txt", os.X_OK): print "File is accessible to execute"
2. Try ステートメントを使用する
open() メソッドをプログラム内で直接使用して、ファイルが存在し、読み取りおよび書き込みが可能かどうかを確認できます。
構文:
open()
開いたファイルが存在しない場合、プログラムはエラーをスローします。try ステートメントを使用してこのエラーをキャッチします。
プログラムはファイルにアクセスできません。多くの理由が考えられます:
開いたファイルが存在しない場合、FileNotFoundError 例外がスローされます;
ファイルは存在します、しかしアクセス許可がないため、Access は PersmissionError 例外をスローします。
したがって、次のコードを使用してファイルが存在するかどうかを確認できます:
try: f =open() f.close() except FileNotFoundError: print "File is not found." except PersmissionError: print "You don't have permission to access this file."
実際には、各例外をそれほど詳細に処理する必要はありません。上記の 2 つの例外は IOError のサブクラスです。 。したがって、プログラムを簡素化できます。
try: f =open() f.close() except IOError: print "File is not accessible."
try ステートメントを使用して判断を行い、すべての例外を非常に簡単かつエレガントに処理します。また、他の外部モジュールと比較して、他の外部モジュールを導入する必要がありません。
3. pathlib モジュールを使用する
pathlib モジュールは Python3 バージョンの組み込みモジュールですが、Python2 ではサードパーティのモジュールを別途インストールする必要があります。
pathlib を使用するには、まずファイル パスを使用してパス オブジェクトを作成する必要があります。このパスには、ファイル名またはディレクトリ パスを指定できます。
パスが存在するかどうかを確認してください
path = pathlib.Path("path/file") path.exist()
パスがファイルであるかどうかを確認してください
path = pathlib.Path("path/file") path.is_file()
以上がPython を使用してファイルが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。