Python close()閉じ忘れ防止-Pythonでwith構文を使ったファイルの読み込み

close()閉じ忘れ防止-Pythonでwith構文を使ったファイルの読み込み

python_with_close_topimage

Pythonには、ファイルの読み込みや通信処理など開始と終了を明確にしなければならない処理があります。

開始・終了処理の記述それ自体は複雑では無いのですが、終了処理をわすれてエラーを引き起こすなどの問題はおこりがち。

Pythonにはwith構文があり、これを使えばファイルの読み込み処理などで、終了の処理忘れ問題を防ぐ事ができます。

この記事では、Pythonのwith構文の使い方や使わない場合との違いを解説したいと思います。

Pythonでファイルの読み込み

まず、Pythonでファイルを読み込む方法を確認しましょう。


読み込むファイル D:/liquidJumper/textfile_utf8.txt の内容

textfile_utf8.txt


「textfile_utf8.txt」をopen()のファイルパスに指定、ファイルを開き、.read()で中身を読み込み出力、.close()でファイルを閉じる処理。

textfile = "D:/liquidJumper/textfile_utf8.txt" 

open_textfile = open(textfile, "r", encoding = "utf-8") 

print(open_textfile.read()) 

open_textfile.close()


説明:

open_textfile = open(textfile, "r", encoding = "utf-8")

open()を使って開きFileオブジェクトを「open_textfile」に代入。”r”読み込みのみ、”utf-8″でエンコード

print(open_textfile.read())

open_textfileの内容をread()で読み込みprint()で出力

open_textfile.close()

Fileオブジェクトをclose()で閉じる

結果:

テキストファイル「open_textfile」の内容が出力されました

「open_textfile」の内容が出力


ファイルを読み込む処理自体は難しくは無いのですが、最後のopen_textfile.close()で閉じる処理を忘れるとエラーを引き起こします。

参考のコードは、短くシンプルなので、エラー箇所も見つけやすく簡単に対処できますが、複雑なコードの場合は面倒になることも考えられます。

Pythonのwith構文を使ったファイルの読み込み

Pythonのwith構文を使うと.close()処理を忘れたエラーを防いでくれます。

with構文とは

with構文は開始と終了が必要な一連の手続きを、自動で処理してくれます。

■開始と終了が必要な処理の例

ファイルのオープン・クローズ処理
通信のオープン・クローズ処理
データベースへのオープン・クローズ処理

↓通信処理を使って外部からMAYAを操作する内容の記事です↓


with構文の記述方法

「textfile_utf8.txt」の内容を出力する同じ処理を、with構文を使って書くと次の様になります。

textfile = "D:/liquidJumper/textfile_utf8.txt" 

with open(textfile, "r", encoding = "utf-8") as open_textfile:

    print(open_textfile.read())


説明:

with open(textfile, "r", encoding = "utf-8") as open_textfile:

open()を使って開きFileオブジェクトを、変数「open_textfile」に代入。”r”読み込みのみ、”utf-8″でエンコード

print(open_textfile.read())

open_textfileの内容をread()で読み込みprint()で出力

Fileオブジェクトを閉じる処理 open_textfile.close()  はありません。


結果:

with構文を使わない場合と同様に、「open_textfile」の内容が出力されました。

with構文は開始と終了の一連の処理を自動で行ってくれるので、閉じる処理 open_textfile.close() は必要ありません。

「open_textfile」の内容が出力

まとめ:Pythonのwith構文でエラー防止

Pythonでwith構文を使ったファイルを読み込む方法を紹介しました。

開始と終了が必要な処理でwith構文を使えば、終了の処理を忘れてエラーを発生させる事を防ぐ事ができます。




BTOパソコンの草分け的ブランド【FRONTIER】

教育機関や研究施設/3DCG/動画編集/そしてゲームプレイにも、用途に合わせたオーダーメイド高性能PCがお得な価格で購入できます

最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】


【デジハリONLINEの 基礎動画 + AdobeCC一年ライセンス のお得プラン】

デジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する、60時間の基礎動画とAdobe creative cloudの一年版ライセンスがパッケージされた、お得な講座プラン

「Adobeマスター講座」

受講ノルマは一切無し、Adobe製品の利用を目的に契約してもOK!これぞコスパ最強プラン!

▶︎ デジハリONLINE講座申込

▶︎基礎動画教材付きAdobe Creative Cloudを年額36,346円(税別)のお得な価格で使用する方法


Twitter Facebook Pocket LINE はてブ

おすすめの関連記事
コチラの記事も読まれています
あわせてよく読まれている記事