Pythonには、ファイルの読み込みや通信処理など開始と終了を明確にしなければならない処理があります。
開始・終了処理の記述それ自体は複雑では無いのですが、終了処理をわすれてエラーを引き起こすなどの問題はおこりがち。
Pythonにはwith構文があり、これを使えばファイルの読み込み処理などで、終了の処理忘れ問題を防ぐ事ができます。
この記事では、Pythonのwith構文の使い方や使わない場合との違いを解説したいと思います。
|
Pythonでファイルの読み込み
まず、Pythonでファイルを読み込む方法を確認しましょう。
読み込むファイル D:/liquidJumper/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.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() は必要ありません。
まとめ:Pythonのwith構文でエラー防止
Pythonでwith構文を使ったファイルを読み込む方法を紹介しました。
開始と終了が必要な処理でwith構文を使えば、終了の処理を忘れてエラーを発生させる事を防ぐ事ができます。
|
自宅からでもWeb制作・プログラミング・アプリ開発などが習得できるさまざまなコースをラインナップ。
非エンジニアでスキルを磨きたい方から、フリーランス、就職/転職を目指す方まで、専属のメンターがサポート。
最近は副業ブームもあり「 はじめての副業コース 」が人気です。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|