Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
open() / ファイル.read() / ファイル.write()
テキストファイルの読み書きを行う基本的な操作です。『open()』関数でファイルを開き、読み取り・書き込みメソッドを使ってデータを処理します。
構文
# ファイルを開いて読み書きします(with 文で自動的に閉じます)。
with open(ファイルパス, モード, encoding='utf-8') as f:
内容 = f.read() # 全内容を文字列で読み込みます。
行 = f.readline() # 1行ずつ読み込みます。
行リスト = f.readlines() # 全行をリストで読み込みます。
f.write(テキスト) # テキストを書き込みます。
f.writelines(行リスト) # 複数行をまとめて書き込みます。
主なモードと関数一覧
| モード / 関数 | 概要 |
|---|---|
| 'r'(読み取り) | ファイルを読み取りモードで開きます。ファイルが存在しない場合は『FileNotFoundError』が発生します。省略時のデフォルトです。 |
| 'w'(書き込み) | ファイルを書き込みモードで開きます。ファイルが存在する場合は内容を上書きします。存在しない場合は新規作成します。 |
| 'a'(追記) | ファイルを追記モードで開きます。既存の内容の末尾に追加します。 |
| 'x'(排他的作成) | 新規ファイルを作成して書き込みモードで開きます。ファイルが既存の場合は『FileExistsError』が発生します。 |
| f.read() | ファイルの全内容を1つの文字列として返します。 |
| f.readline() | 1行分のテキストを返します。繰り返し呼ぶと順に次の行を返します。 |
| f.readlines() | 全行をリストとして返します。各要素には改行文字が含まれます。 |
| f.write(テキスト) | テキストをファイルに書き込みます。改行は自動では挿入されません。 |
| f.writelines(リスト) | 文字列のリストをまとめてファイルに書き込みます。改行は自動では挿入されません。 |
サンプルコード
# ファイルに書き込みます。
with open('memo.txt', 'w', encoding='utf-8') as f:
f.write('1行目のテキストです。\n')
f.write('2行目のテキストです。\n')
# ファイルの全内容を読み込みます。
with open('memo.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content) # ファイルの全内容が出力されます。
# 1行ずつ読み込みます(大きいファイルに適しています)。
with open('memo.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.rstrip()) # 末尾の改行を除いて出力します。
# readlines() で全行をリストとして取得します。
with open('memo.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
print(f'{len(lines)}行あります。')
print(lines[0].strip()) # 1行目の内容を出力します。
# writelines() で複数行をまとめて書き込みます。
lines_to_write = ['りんご\n', 'バナナ\n', 'チェリー\n']
with open('fruits.txt', 'w', encoding='utf-8') as f:
f.writelines(lines_to_write)
# 追記モード('a')でファイルの末尾に追加します。
with open('memo.txt', 'a', encoding='utf-8') as f:
f.write('追記した行です。\n')
# ファイルが存在しない場合のエラー処理
try:
with open('存在しないファイル.txt', 'r', encoding='utf-8') as f:
content = f.read()
except FileNotFoundError:
print('ファイルが見つかりません。')
概要
ファイル操作では『with open(...) as f:』構文を使うことが推奨されます。『with』文はブロックを抜けると自動的に『f.close()』を呼び出してファイルを閉じるため、例外が発生した場合でもファイルが確実に閉じられます。
日本語などのマルチバイト文字を含むファイルを読み書きする場合は『encoding="utf-8"』を明示的に指定してください。Windowsでは省略時のエンコードが環境によって異なるため、文字化けや例外が発生することがあります。
モダンなパス操作ライブラリ『pathlib』を使うと『Path("memo.txt").read_text(encoding="utf-8")』のように簡潔に書けます。詳細は『pathlib.Path()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。