チェック用のファイルを作成します。
既存のファイルを使用するか、新しいファイルを作成して、このチュートリアルに示されているサンプルコードをテストできます。名前の付いた新しいテキストファイル clients.txt チュートリアルの次のパートで後で使用するために、次のコンテンツで作成されています。
ID名Eメール
01 Jony Liver [メール保護]
02 Manik Hossain [メール保護]
03 Neha Akter [メール保護]
04 Janatul Ferdous [メール保護]
05 Helal Uddin [メール保護]
例-1:IOErrorを使用して、ファイルが開かれているかどうかを確認します
IOError 以前に開いたファイルを開くためにopen()関数が呼び出されたときに生成されます。次のスクリプトを使用してPythonファイルを作成し、を使用してファイルが開かれているかどうかを確認します 試してみてください ブロック。ここでは、既存のファイル名が入力として取得され、読み取り用に開かれます。次に、open()関数を再度呼び出して、IOErrorを発生させ、エラーメッセージを出力する同じファイルを開きます。
#ファイル名を取得して確認します
ファイル名=入力(('既存のファイル名を入力します。NS')。
#open()関数を使用してファイルを初めて開く
fileHandler =オープン((ファイル名、'NS')。
#同じファイルをもう一度開こうとします
試す:
オープンで(('ファイル名'、'NS')。 なのでファイル:
#成功メッセージを印刷する
印刷((「ファイルが読み取り用に開かれました。」)。
#ファイルが以前に開かれた場合にエラーを発生させる
IOErrorを除く:
印刷((「ファイルはすでに開いています。」)。
出力:
上記のスクリプトを実行すると、次の出力が表示されます。ここ、 clients.txt 現在の場所に存在し、エラーメッセージ、 ファイルはすでに開いています、 のために印刷しました IOError 例外。
例-2:closedプロパティを使用して、ファイルが閉じているかどうかを確認します。
の値 閉まっている いずれかのファイルが閉じられた場合、プロパティはtrueになります。次のスクリプトを使用してPythonファイルを作成し、現在の場所に存在するファイルが閉じているかどうかを確認します。前のサンプルスクリプトは、ユーザーから取得したファイル名が現在の場所に存在しない場合にエラーを生成します。この例では、この問題は解決されています。 NS あなた ここでは、モジュールを使用して、ユーザーから取得するファイル名の存在を確認します。 check_closed()関数は、ファイルが閉じているかどうかをチェックするように定義されており、ファイルが存在する場合に呼び出されます。
#OSモジュールをインポートしてファイルの存在を確認します
輸入
#Drfine関数はファイルが閉じているかどうかをチェックします
def check_closed(()。:
もしもfileHandler.closed == False:
#成功メッセージを印刷する
印刷((「ファイルが読み取り用に開かれました。」)。
そうしないと:
#エラーメッセージを出力する
印刷((「ファイルが閉じられました。」)。
#ファイル名を取得して確認します
ファイル名=入力(('既存のファイル名を入力します。NS')。
#ファイルが存在するかどうかを確認します
もしもos.path.exists((ファイル名)。:
#ファイルを開いて読み取ります
fileHandler =オープン((ファイル名、'NS')。
#関数を呼び出す
check_closed(()。
そうしないと:
#ファイルが存在しない場合はメッセージを出力する
印刷(('ファイルが存在しません。')。
出力:
上記のスクリプトを実行すると、次の出力が表示されます。ここ、 clients.txt 現在の場所に存在し、成功メッセージ、 ファイルが読み取り用に開かれました、 閉じたプロパティの値が返されたために出力されました NS 。
例-3:OSErrorを使用して、ファイルが開かれているかどうかを確認します
NS OSError すでに開かれているファイルに対してrename()関数が複数回呼び出されたときに生成されます。次のスクリプトを使用してPythonファイルを作成し、を使用してファイルが開いているか閉じているかを確認します OSError 。 osモジュールは、ファイルの存在を確認し、ファイルの名前を変更するためにスクリプトで使用されています。いつ rename() 関数が2回呼び出されると、OSErrorが生成され、カスタムエラーメッセージが出力されます。
#OSモジュールをインポートしてファイルの存在を確認します輸入
#既存のファイル名を設定する
ファイル名='clients.txt'
#新しいファイル名を設定します
newname ='customers.txt'
#ファイルが存在するかどうかを確認します
もしもos.path.exists((ファイル名)。:
試す:
#名前変更関数を初めて呼び出す
os.rename((ファイル名、新しい名前)。
#名前変更関数を2回呼び出す
os.rename((ファイル名、新しい名前)。
#ファイルが開いている場合はエラーを発生させる
OSErrorを除く:
印刷((「ファイルはまだ開いています。」)。
そうしないと:
#ファイルが存在しない場合はメッセージを出力する
印刷(('ファイルが存在しません。')。
出力:
上記のスクリプトを実行すると、次の出力が表示されます。ここ、 clients.txt 現在の場所に存在し、エラーメッセージ、 ファイルはまだ開いていますが、 印刷したので OSError 2番目のときに例外が生成されました rename() 関数が実行されました。
結論:
スクリプト内で同じファイルを複数回操作する必要がある場合は、ファイルが開いているか閉じているかを知ることが重要です。ファイル操作の完了後に、close()関数を呼び出してファイルを閉じることをお勧めします。このエラーは、ファイルを閉じずに同じスクリプトで2回目に開いたときに発生します。このチュートリアルでは、Pythonユーザーを支援するための簡単な例を使用して、この問題のさまざまな解決策を示しました。