ネット上でPythonのファイル操作の方法を調べていると「open with」という構文が良く出てきたのでまとめてみました。
この 「with open」 構文のメリットとして可読性が上がることと「close」をする必要がない?とのことなのでサンプルプログラムを作って動かしてみました。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
ファイル操作について
基本的なファイルの開き方
まずは、基本的なファイルの操作方法について説明していきます。
下のテキストファイルが今回読み込む対象のファイルとなります。このファイルは実行するプログラムです。と同じ階層に配置しておきます。
以下のサンプルソースは「sample_data.txt」を読み込みモードで開いて(2行目)、ファイルの中身を表示(3行目)するプログラムです。
どの言語を使うときもファイル操作は「open」したら「close」をします。おまじないだと思っておいてください。
実行結果は以下の通りで、「 sample_data.txt 」の内容を出力しています。

同じファイルを2回開く場合(よい例)
良い例とはいっても、
実装するときに、このような実装には絶対しないとは思いますが、、、
以下のサンプルプログラムでは、2行目、3行目で「 sample_data.txt 」を一旦開いて閉じます(特に意味はありません)
5行目〜7行目で再度「 sample_data.txt 」を開きなおして標準出力に出力します。
実行結果は先ほどと同じです。

同じファイルを2回開く場合(よくない例) close忘れ
先ほどのサンプルソースから「close」処理を削除しました。
個人的にはcloseしていないファイルにアクセスするわけなのでエラーになるのかと思っていましたが、
どうやらエラーになりませんでした。ファイルのモードを変えて試してみましたがそれでもエラーは発生しませんでした。

with open構文の使い方
ここからが本番で、「with open」構文の使い方について説明します。
以下のような感じで「with」の後に「open」でファイルを引きます。「別名.read()」でファイルの内容を読み込みます。動かしてみて気が付いたことは「read()」は一括ですべての行を取得しています。
スポンサーリンク
なので、一行一行処理する必要がある場合は「工事中」を参考に実装してみてください。
with open(対象ファイル, モード) as 別名: インデントを下げて処理を実装 読み込むときは「別名.read()」

まとめ
「close」なして同じファイルにアクセスできたため、実は「close」は不要?
それにしても可読性はあがるので「with open」を使ったほうがよさそう
「with open」構文の使い方は、 「with open(対象ファイル, モード) as 別名:」でインデントを下げて処理を書く