ファイルの読み込みと書き込み:データの保存と取得#

はじめに#

今回は、プログラミングで非常に重要な「ファイル操作」について学んでいきましょう。

私たちが作るプログラムでは、データを一時的にメモリに保存して処理することが多いです。しかし、プログラムを終了すると、メモリ上のデータは消えてしまいます。データを永続的に保存したり、後で再利用したりするためには、ファイルにデータを書き込んだり、ファイルからデータを読み込んだりする必要があります。

この記事では、Pythonでファイルを読み書きする基本的な方法について解説していきます。

ファイル操作の基本:open関数#

Pythonでファイルを扱うときは、まずopen関数を使ってファイルを「開く」必要があります。ファイルを開くと、そのファイルに対して読み込みや書き込みなどの操作ができるようになります。

open関数の基本的な使い方は次のとおりです。

>
# ファイルを開く
file = open('sample.txt', 'w')  # 書き込みモードでファイルを開く

# ファイルに書き込む
file.write('こんにちは、Python!')

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

上記のコードでは、以下のことを行っています。

  1. open('sample.txt', 'w')sample.txtというファイルを書き込みモード('w')で開きます
  2. file.write()メソッドを使ってファイルにテキストを書き込みます
  3. file.close()でファイルを閉じます(とても重要な操作です)

コードの実行後、ファイル一覧を開くとsample.txtというファイルが作成されていることが確認できます(もし一覧に表示されていない場合は、一度更新ボタンを押してださい)。

ファイルの作成確認

sample.txtをダブルクリックすると、ファイルの中身が表示されます。

こんにちは、Python!

ファイルモード#

open関数の第2引数は「モード」を指定します。モードはいくつかありますが、まずは次の3つのモードを覚えておきましょう。

  • 'r' - 読み込み専用モード(デフォルト)
  • 'w' - 書き込みモード(ファイルが既に存在する場合は中身を消去)
  • 'a' - 追記モード(ファイルの末尾に追加)

with文を使ったファイル操作#

ファイル操作では、必ずファイルを閉じるclose()を呼び出す必要があります。しかし、処理の途中でエラーが発生するとclose()が実行されない可能性があります。

このような問題を解決するために、Pythonではwith文を使ったファイル操作が推奨されています。with文を使うと、ブロックを抜けるときに自動的にファイルが閉じられるため、close()を明示的に呼び出す必要がなくなります。

>
# with文を使ったファイル操作
with open('sample.txt', 'w') as file:
    file.write('こんにちは、Python!\n')
    file.write('ファイル操作を勉強中です。')

print('ファイルへの書き込みが完了しました。')
ファイルへの書き込みが完了しました。

上記のコードでは、withブロックを抜けるときに自動的にファイルが閉じられます。これにより、エラーが発生しても確実にファイルが閉じられるため、より安全なコードになります。

ファイルの読み込み#

ファイルからデータを読み込む方法はいくつかあります。主な方法を見ていきましょう。

read() メソッド#

read()メソッドは、ファイルの内容をすべて読み込みます。

>
# ファイルの内容を全て読み込む
with open('sample.txt', 'r') as file:
    content = file.read()

print(content)
こんにちは、Python!
ファイル操作を勉強中です。

readline() メソッド#

readline()メソッドは、ファイルから1行だけ読み込みます。

>
# 1行ずつ読み込む
with open('sample.txt', 'r') as file:
    line1 = file.readline()
    line2 = file.readline()

print('1行目:', line1, end='')  # end=''で余分な改行を防ぐ
print('2行目:', line2, end='')
1行目: こんにちは、Python!
2行目: ファイル操作を勉強中です。

readlines() メソッド#

readlines()メソッドは、各行を要素とするリストを返します。

>
# すべての行をリストとして読み込む
with open('sample.txt', 'r') as file:
    lines = file.readlines()

print('行数:', len(lines))
print('各行のリスト:', lines)
行数: 2
各行のリスト: ['こんにちは、Python!\n', 'ファイル操作を勉強中です。']

for文を使った読み込み#

ファイルオブジェクトはイテラブル(反復可能)なので、for文でも読み込めます。for文を使うと、ファイルの各行を1行ずつ処理できます。大きなファイルを扱う場合、1行ずつ読み込むことでメモリの使用量を抑えることができます。

>
# for文でファイルを読み込む
with open('sample.txt', 'r') as file:
    for line in file:
        print(f'> {line.strip()}')  # strip()で行末の改行を削除
> こんにちは、Python!
> ファイル操作を勉強中です。

ファイルへの書き込み#

ファイルへのデータ書き込みには、write()メソッドやwritelines()メソッドを使います。

write() メソッド#

この記事ですでに何度も使っていますが、write()メソッドは文字列をファイルに書き込みます。

>
# ファイルに書き込む
with open('output.txt', 'w') as file:
    file.write('Pythonでファイル操作をマスターしましょう!\n')
    file.write('簡単ですよ。')

print('書き込み完了')
書き込み完了

writelines() メソッド#

writelines()メソッドは、リストの各要素をファイルに書き込みます。

>
# リストの内容をファイルに書き込む
lines = [
    'これは1行目です。\n',
    'これは2行目です。\n',
    'これは3行目です。'
]

with open('multiple_lines.txt', 'w') as file:
    file.writelines(lines)

print('複数行の書き込み完了')
複数行の書き込み完了

作成したファイルを読み込んで確認しましょう。

>
# 作成したファイルを読み込む
with open('multiple_lines.txt', 'r') as file:
    content = file.read()

print(content)
これは1行目です。
これは2行目です。
これは3行目です。

ファイルへの追記#

すでに存在しているファイルに内容を追加したい場合は、'a'(追記)モードを使います。

>
# 既存のファイルに追記する
with open('output.txt', 'a') as file:
    file.write('\n\n追記:ファイルの最後に新しい内容を追加できます。')

print('追記完了')
追記完了

更新されたファイルを確認しましょう。

>
# 更新されたファイルを読み込む
with open('output.txt', 'r') as file:
    content = file.read()

print(content)
Pythonでファイル操作をマスターしましょう!
簡単ですよ。

追記:ファイルの最後に新しい内容を追加できます。

まとめ#

この記事では、Pythonでのファイル操作の基本について学びました。

  • ファイルの開き方
    • open()関数の使い方
    • ファイルモード('r', 'w', 'a'など)
    • with文を使った安全なファイル操作
  • ファイルの読み込み
    • read(), readline(), readlines()
    • for文を使った読み込み
  • ファイルへの書き込み
    • write(), writelines()

ファイル操作は、データの保存と取得に欠かせない基本的なスキルです。この知識を活かして、プログラムで生成したデータを保存したり、外部のデータファイルを読み込んで処理したりすることができるようになりました。