はじめに
この実験では、Python でファイルを読み書きする方法を学びます。簡単な例から始め、徐々にコードの複雑さを増やしていきます。
ファイルの読み書きは、どのプログラミング言語においても不可欠なスキルです。データを永続的に保存して操作することができ、多くのアプリケーションの重要な構成要素です。 Python では、ファイルの読み書きは簡単で学びやすいです。まずはファイルの読み方を学び、次にファイルの書き方に移ります。
達成目標
- ファイルの読み書き
ファイルの読み取り
Python でファイルを読み込むには、open 関数を使用します。この関数はファイルオブジェクトを返します。その後、ファイルオブジェクトのさまざまなメソッドを使って、ファイルの内容を読み取ることができます。
新しい Python インタプリタセッションを開き、次のコードを入力してください。
python3
以下は、テキストファイルを開いて読み込む方法の例です。
## ファイルを開く
f = open('filename.txt', 'r')
## ファイルの内容を読み取る
contents = f.read()
## 内容を表示する
print(contents)
## ファイルを閉じる
f.close()
open 関数には 2 つの引数が必要です。ファイル名と、ファイルを開くモードです。この場合、'r' モードを使用しています。これは「読み取り」を意味します。これはデフォルトモードなので、open('filename.txt') と書いてもかまいません。
ファイルオブジェクトの read メソッドは、ファイルの内容を文字列として返します。その後、内容を表示したり、好きなように操作することができます。
使い終わったらファイルを閉じることが重要で、システムリソースを解放するためです。これは、ファイルオブジェクトの close メソッドを使って行うことができます。
ファイルの書き込み
Python でファイルに書き込むには、ファイルを読み込む場合と同様の手順を踏みます。open 関数を使ってファイルオブジェクトを取得し、その後 write メソッドを使ってファイルに書き込みます。
以下は、書き込み用にファイルを開き、いくつかのテキストを書き込む方法の例です。
## ファイルを開く
f = open('filename.txt', 'w')
## ファイルにいくつかのテキストを書き込む
f.write('Hello, world!\nPython')
## ファイルを閉じる
f.close()
ファイルを読み込む場合と同様に、open 関数を使ってファイルオブジェクトを取得します。今回は、「書き込み」を意味する 'w' モードを使います。これは、ファイルが既に存在しない場合は作成し、存在する場合は上書きします。
write メソッドは文字列引数を取り、それをファイルに書き込みます。ファイルを読み込む場合と同様に、使い終わったらファイルを閉じることが重要です。
ファイル内容の操作
これまでファイルの読み書き方法を学んだので、ファイル内容の操作に関するより高度な例を見てみましょう。
ファイルを 1 行ずつ読む
時には、一度に全体の内容を読むのではなく、ファイルを 1 行ずつ読みたい場合があります。このために、ファイルオブジェクトの readline メソッドを使うことができます。
以下は、ファイルを 1 行ずつ読む方法の例です。
## ファイルを開く
f = open('filename.txt', 'r')
## 各行を読み取って表示する
for line in f:
print(line)
## ファイルを閉じる
f.close()
for ループはファイルの各行を反復処理します。各反復で、その行を読み取って表示します。読み取る行がなくなると、ループは終了し、ファイルが閉じられます。
ファイルに 1 行ずつ書き込む
ファイルに 1 行ずつ書き込むには、ファイルオブジェクトの writelines メソッドを使うことができます。このメソッドは文字列のリストを引数に取り、それらをファイルに書き込みます。リスト内の各文字列が、ファイル内の別々の行になります。
以下は、ファイルに 1 行ずつ書き込む方法の例です。
## ファイルを開く
f = open('filename.txt', 'w')
## 行のリストをファイルに書き込む
lines = ['Line 1', 'Line 2', 'Line 3']
f.writelines(lines)
## ファイルを閉じる
f.close()
ファイルに追記する
既存の内容を上書きするのではなく、ファイルに追記するには、ファイルを開く際に 'a' モードを使います。これにより、追記モードでファイルが開かれ、既存の内容を上書きすることなく、新しいコンテンツをファイルの末尾に追加することができます。
以下は、ファイルに追記する方法の例です。
## ファイルを開く
f = open('filename.txt', 'a')
## ファイルにいくつかのテキストを追記する
f.write('This is new content')
## ファイルを閉じる
f.close()
with 文
Python の with 文は、コンテキストマネージャによって定義されたメソッドでコードブロックの実行をラップするために使用されます。コンテキストマネージャは、__enter__ と __exit__ メソッドを定義するオブジェクトです。with 文は、それに続くインデントされたコードブロックの期間中に一時的なコンテキストマネージャを作成します。
open 関数は、Python の組み込み関数であり、オープンされたファイルを表すファイルオブジェクトを返します。ファイルを扱う際には、使い終わったら閉じることが重要で、システムリソースを解放するためです。with 文は、ファイルを扱うのを簡単にします。なぜなら、コードブロックが終了すると、例外が発生した場合でも自動的にファイルが閉じられるからです。
以下は、with 文を使ってファイルを開き読み取る方法の例です。
with open('filename.txt', 'r') as f:
contents = f.read()
print(contents)
この例では、with 文の中で open 関数が呼び出され、読み取りモードで 'filename.txt' ファイルが開かれます。その後、ファイルオブジェクトは as 句に渡され、f という名前が付けられます。with 文に続くインデントされたコードブロックでは、ファイルオブジェクト f を使ってファイルの内容を読み取ることができます。
コードブロックが終了すると、例外が発生した場合でも、コンテキストマネージャによってファイルが 自動的に閉じられます。これは、ファイルオブジェクトの close メソッドを明示的に呼び出す必要がないことを意味します。
ファイルオブジェクトの生存期間を管理するために with 文を使うことは、手動でファイルを開いて閉じるよりも推奨されます。なぜなら、より簡潔で、例外が発生した場合でもファイルが常に適切に閉じられることが保証されるからです。
まとめ
この実験では、Python でファイルを読み書きする方法を学びました。ファイルをどのように開き閉じるか、その内容をどのように読み書きし、より高度な方法でファイル内容を操作するかを見ました。また、ファイルを開く際に異なるモードを使って、それがどのようにアクセスされるかを制御する方法も見ました。
この実験が終わるまでに、あなたは Python で自信を持ってファイルを読み書きできるようになるはずです。



