【Python】with構文を1分で解説―with open/ファイル操作―

Python

Pythonで利用するwith文の利用方法を解説します。

with文はファイル操作を行うopen関数を簡易的に書けるようにするだけでなく、例外処理やファイルのcloseを自動的にしてくれたりと結構便利な機能を持ち合わせています。

このページでは、with構文の使い方とメリットを端的に解説していきます。

このページで学べる内容
  • with文の使い方
    • with文:構文ルール
  • with文のメリット

Pythonエンジニアであれば、知っておいて損はない便利な知識ですので、是非最後までご覧ください。

スポンサーリンク
スポンサーリンク

with構文とは?

with構文とは、ファイル操作処理のコードを"短縮して記述するため"の構文です。

with構文の前提知識

with文はPythonにおけるファイル操作関連のプログラムの書き方の知識が前提となります。

open関数/read・write・closeメソッドなどのワードにピンとこない方は、まずはこちらの記事から。

早速with構文を使った書き方とそうでない書き方を見比べてみましょう。

with構文を使わない基本的な書き方がこちら。

# ファイルを新規作成
file = open("test.txt", "w",encoding='utf-8')

# writeメソッドを利用しファイルに文字を書き込む
file.write("Hello Python!")

# ファイルを閉じる
file.close()

①ファイルを開いて、②ファイル操作を行い、最後に③ファイルを閉じるという流れに沿って記述されていますね。

そして、with文を使って書いたコードがこちら。

with open("test.txt", "w",encoding='utf-8') as file:
    file.write("Hello Python!")

with文を利用すると以下のようにかなりすっきりと書くことができます。closeメソッドが省かれ、すっきり2行で記述されていることが分かります。

念のため補足しますが、どちらも結果は全く同じです。

したがって、with構文を使いこなされば、ファイル関連の処理を少ない行数で効率的に記述することが可能になります。

ここからは、with文の書き方について詳しく解説していきます。

with文:構文ルール

with文と言えど、書き方はとっても簡単。

構文ルール:with文

with open("ファイル名", "モード","エンコーディング") as 変数名:
  処理1
  処理2
  ・・・

open関数の使い方は、こちら「https://it-biz.online/python/file/」を参照。

with構文は、ブロックを生成するという点だけ注意して覚えれば後は特に難しくはありません。

with文のメリット

with文を利用するメリットについて。

実は、with文を使う目的はソースコードをすっきりさせるだけではないのです。

ファイルの閉じ忘れを防止(close漏れの防止)

ファイルの閉じ忘れにはデメリットが存在します。開けるファイル数には限りがあることや、開いたままのファイルが思わぬエラーを引き起こしてしまうためです。

※閉じ忘れたからと言って、ファイルが壊れたりすることはありません。閉じ忘れてもPythonが自動的にファイルを閉じてくれる仕組み自体は備わっています。

そのため、ファイルを操作する場合には、必ずcloseメソッドでファイルを閉じるというのが原則です。

# ファイルを新規作成
file = open("test.txt", "w",encoding='utf-8')

# writeメソッドを利用しファイルに文字を書き込む
file.write("Hello Python!")

# ファイルを閉じる
file.close()

が、このファイルクローズは結構忘れられる場合が多いもの。特に初心者の方というよりは、ある程度Pythonに慣れてきた人に多く見受けられるのも現実。

with文を利用すれば、そもそもcloseメソッドは不要であるため、ファイルを閉じ忘れるということがありません。

with open("test.txt", "w",encoding='utf-8') as file:
    file.write("Hello Python!")

with文自体にファイルクローズの仕組みが備わっているため、わざわざファイルを閉じる必要がないのです。

ソースの可読性が向上する

with文は、def文if文などのように1つのブロックを生成します。

そのためwith文の中の処理がインデントされるため、ソースが読みやすくなります。(どこからどこまでが、with文の処理なのかが一目で分かりやすくなる。)

with open("test.txt", "w",encoding='utf-8') as file:
    file.write("Hello Python!")
    file.write("Hello Python!")
    file.write("Hello Python!")

with open・・・・

初心者の方は、with文のメリットはこの2点を理解しておけばまずはOK。

実はこの他にもたくさんのメリットはあるため、是非積極的にwith文を利用していってみてください。

Pythonを1から学習したい方は

Pythonをより実践的に学びたい―。実際にコーディングをしながら学びたい―。独学に限界を感じている―。

そんな方には、無料体験/オンライン完結もあるプログラミングスクールで学ぶのがおすすめです。都度検索しながら知識を補完していくのではなく、1から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。

各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。

タイトルとURLをコピーしました