Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pythonにおけるファイルハンドリングのためのコンテキストマネージャの使用 | Pythonにおけるファイル操作の習得
Python構造化プログラミング

bookPythonにおけるファイルハンドリングのためのコンテキストマネージャの使用

メニューを表示するにはスワイプしてください

Pythonは、多くの操作を最適化する堅牢な言語であり、リソース管理もその一つです。例えば、ファイルを開いて閉じ忘れた場合でも、プログラム終了時にPythonが自動的にファイルを閉じます。しかし、この機能に頼ることは推奨されません。リソースを明示的かつ適切に管理するために、Pythonはwith文という仕組みを提供しています。

ファイル管理のためのwith文

with文は、ファイルなどのリソースのセットアップとクリーンアップを自動化し、管理を簡素化します。以下は簡単な例です:

with open("greetings.txt", "r") as file:
    print(file.read())

このwith文の使用により、ファイルの内容を読み込む際に例外が発生した場合でも確実にファイルが閉じられます。これはtry-finallyブロックを使う場合と同等です:

file = open("greetings.txt", "r")
try:
    print(file.read())
finally:
    file.close()

コンテキストマネージャによる例外処理

with文を使用する主な利点の一つは、ファイル操作中に予期しないエラーが発生した場合でも対応できる点です。次のシナリオを考えてみましょう:

'with'文を使わない場合:

file = open("greetings.txt", "r")
1//0
print(file.read())
file.close()

file.close()の呼び出し前にエラーが発生したため、ファイルは開いたままになります。

file.closed # False

Note

file.closed属性はファイルが閉じられているかどうかを示します。

一方:

file = open("greetings.txt", "r")
try:
    1//0  # This will raise a ZeroDivisionError
    print(file.read())
finally:
    file.close()
print(file.closed)  # Output: True

'with'文を使った場合:

with open("greetings.txt", "r") as file:
    1//0  # Even though an error occurs, the file is still closed
    print(file.read())
print(file.closed)  # Output: True

どちらの例でも、エラーが発生してもファイルは閉じられます。しかし、with文を使うことでコードがより簡潔で読みやすくなり、プログラムの実行が中断されても確実にリソースが解放されることが保証されます。

Note

コンテキストマネージャはファイル管理に限らず、ネットワーク接続データベースセッションなど、確実なセットアップとクリーンアップが必要なあらゆるリソースに利用できます。

question mark

Pythonでファイルを閉じる方法は?

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  5
some-alt