【Python入門】with文の概要や使い方(openでの操作/例外処理など)を解説

Pythonでは、外部のファイルを開くための関数としてopen()があります。

この際、ファイル操作後の終了処理を省くため、with文とともに用いることが多いです。

しかし、「そもそもwith文とは?」「with文を使うと何ができるのか」と疑問を持つ方もいるかもしれません。

この記事では、with文の概要や使い方、open関数を用いた活用方法(ファイル操作や例外処理)について解説します。

目次

with文とは

with文は、処理の終了とともに冒頭で指定した設定を開放する (元に戻す) ための記述法です。

例えば、open()関数にてファイルを開いた場合、操作が終わった後はclose()メソッドでファイルを閉じる必要があります。

これは、容量が大きいファイル等を開きっぱなしにしておくと、プログラムの動作や処理速度に影響を及ぼす可能性があるためです。

(普段PCを使う際、アプリや検索エンジンのタブを開きすぎると操作が重くなる感覚に近いです)

一方with文では、close()メソッドを使わなくても、内部の処理が終わると同時に自動でファイルを閉じる(元の状態に戻す)ことができます。

またwith文の場合、途中でエラーが発生した場合にも対応できるといったメリットが挙げられます。

ファイルオブジェクトを扱うときに with キーワードを使うのは良い習慣です。 その利点は、処理中に例外が発生しても必ず最後にファイルをちゃんと閉じることです。 with を使うと、同じことを tryfinally ブロックを使って書くよりずっと簡潔に書けます:

7.2. ファイルを読み書きする – 3.10.0b2 Documentation

基本的な使い方

with文の記述方法として、「対象処理(with以降で記述)」にて記述した設定が、with文の実行中に保持される形となります。

その際、対象となる設定は「変数名(as以降に記述)」に保持され、処理時に使用が可能となります。

また、Pythonではインデント(字下げ)した内容に対して「この部分がwith文で行う処理」と認識する仕様になっています。

そのため、処理内容については必ず字下げを行うようにしてください

path = r"Data\Sample.txt"  # pathという変数で、sampleファイルのパス(所在)を保持

with open(path) as f:  # open関数にて開いたファイルの内容をfに保持
    print(f)  # fの中身を表示

open関数を用いた活用方法

冒頭でも書いた通り、with文を使用する際はopen()関数とともに用いることが多いです。

ここから先では、with文でファイルを開く場合の応用事例について紹介していきます。

複数ファイルを開きたい場合

一度に複数のファイルを指定したい場合は、カンマ区切りでopen()関数を記述します。

各ファイルのパスごとに変数名を付与できるため、処理を行う際にも別々に呼び出して処理が可能です。

path_a = r"Data\Sample.txt"  # pathという変数で、sampleファイルのパス(所在)を保持
path_b = r"Data\Sample2.txt"  # pathという変数で、sampleファイルのパス(所在)を保持

with open(path_a) as f_a, open(path_b) as f_b:  # 各ファイルの内容をf_a、f_bに保持
    print(f_a.read())  # f_aの中身を表示
    print(f_b.read())  # f_bの中身を表示

例外(エラー)処理を行いたい場合

with文とは」にも記載した通り、with文ではファイル操作に失敗しても自動で終了処理を行うことができます

一方で、例外が発生した場合でもファイルを閉じたくない(プログラムの実行を続けたい)場合は、try文を併用します。

例外…プログラムの実行が継続できないような異常(エラー)のこと

try文のうち、try節では実行内容を、except節では対象となるエラーが発生した場合の処理を指定します。

try文を活用すれば、例外が発生した場合でも実行を止めることなく対処することが可能です。

path = r"Data\Sample.txt"  # pathという変数で、sampleファイルのパス(所在)を保持

with open(path) as f:  # open関数にて開いたファイルの内容をfに保持
    try:  # 以下の処理を実行
        print(f.read())  # fの中身を表示する
    except FileNotFoundError as err:  # FileNotFoundErrorが発生した場合、以下の処理を実行
        print(err)  # errの中身を表示

try文については、こちらの記事で詳しく解説しています

まとめ

この記事では、with文の概要や使い方、open関数を用いた活用方法(ファイル操作や例外処理)について解説しました。

with文を活用すれば、記述量をおさえつつ例外発生時にもしっかりと対処を行うことができます。

Pythonを扱う上では欠かせない存在ですので、しっかりと基礎を押さえておくようにしましょう。

シェアはこちらから
目次