【6日でできるPython入門】入出力


プログラムにおける「入出力(Input/Output、略してI/O)」は、外部とのデータのやり取りを指します。
Pythonでは、ファイルの読み書きが非常にシンプルにできる仕組みが整っています。
 ここでは、ファイルの基本的な書き込み・読み込みの方法、ファイルモードやエンコーディングの重要性について、具体的なコード例とともに詳しく解説します。
入出力の扱いはほぼすべての実践プログラムに不可欠なので、確実に理解しましょう。

1.ファイルへの書き込み

1.1. 基本的な書き込み

ファイル名: lesson25-1.py

text = "こんにちは、Python!"
file = open('greeting.txt', 'w', encoding='utf-8')
file.write(text)
file.close()

解説

  • openの第1引数はファイル名、第2引数はモード('w'は書き込み)。
  • encoding='utf-8'で文字コードを指定(日本語対応のため必須)。
  • 書き込み後は必ずclose()でファイルを閉じる必要があります。

1.2. with文を使った安全な書き込み

ファイル名: lesson25-2.py

text = "Pythonでファイル操作"
with open('greeting2.txt', 'w', encoding='utf-8') as f:
    f.write(text)

解説

  • with文はファイル処理後、自動でclose()を呼び出してくれます。
  • 書き忘れやエラー時のファイルロック防止に有効で推奨される方法です。

2.ファイルの読み込み

2.1. 一括読み込み

ファイル名: lesson25-3.py

with open('greeting.txt', 'r', encoding='utf-8') as f:
    content = f.read()

print(content)

実行結果

こんにちは、Python!

2.2. 1行ずつ読み込み

ファイル名: lesson25-4.py

with open('greeting.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(line.strip())  # 改行コードを除去して表示

解説

  • ファイルオブジェクトをfor文で回すと1行ずつ取得できます。
  • strip()で行末の改行を削除しています。

3.ファイルモード一覧

モード内容
'r'読み込み(ファイルがなければエラー)
'w'書き込み(既存ファイルは上書き)
'x'新規作成(存在すればエラー)
'a'追記(既存ファイルの末尾に追加)
'b'バイナリモード(rb, wbなどで指定)

4.エンコーディングの重要性

4.1. 文字列のバイト表現を確認

ファイル名: lesson25-5.py

with open('sample_utf8.txt', 'w', encoding='utf-8') as f:
    f.write('あ')

with open('sample_utf8.txt', 'rb') as f:
    print(f.read())

実行結果

b'\xe3\x81\x82'

4.2. cp932(Windows標準)の例

ファイル名: lesson25-6.py

with open('sample_cp932.txt', 'w', encoding='cp932') as f:
    f.write('あ')

with open('sample_cp932.txt', 'rb') as f:
    print(f.read())

実行結果

b'\x82\xa0'

解説

  • 同じ「あ」でもエンコーディングによりバイト列が異なります。
  • ファイルを正しく読み書きするには、書き込み時と読み込み時のencodingを揃える必要があります

4.3. 正しいエンコーディングでの読み書き例

ファイル名: lesson25-7.py

# UTF-8で書き込みと読み込み
with open('text.txt', 'w', encoding='utf-8') as f:
    f.write('こんにちは')

with open('text.txt', 'r', encoding='utf-8') as f:
    print(f.read())

# CP932で書き込みと読み込み
with open('text.txt', 'w', encoding='cp932') as f:
    f.write('こんにちは')

with open('text.txt', 'r', encoding='cp932') as f:
    print(f.read())

実行結果

こんにちは
こんにちは

入出力まとめ表

項目内容・説明ポイント
ファイル書き込みopen('file', 'w')write()close()with文を使うと自動で閉じて安全
ファイル読み込みopen('file', 'r')read()またはforで1行ずつエンコーディングを合わせることが必須
モード'r', 'w', 'x', 'a', 'b'などバイナリファイルは'b'を付けて扱う。
エンコーディング文字列の内部表現。UTF-8が標準で推奨OS依存のcp932などは環境に注意

ファイルの入出力は、Pythonプログラムの外部データとの接点を作り、あらゆる用途で必須の基本技術です。
with文を使った安全なファイル操作と、エンコーディングの理解をしっかり習得して、確実に活用できるようにしましょう。