Python超入門⑦ エラー処理とファイル保存を覚えよう
try、except、ValueError、with、openを使い、入力エラーへの対応とテキストファイルの読み書きを学びます。
第7回では、間違った入力で停止しないようにする方法と、結果をファイルへ保存する方法を学びます。
tryとexcept
数字を求めているのに文字が入力されると、intへの変換でエラーが発生します。
try:
age = int(input("年齢: "))
print(f"{age}歳です")
except ValueError:
print("数字を入力してください")
tryの中でエラーが発生すると、対応するexceptへ移動します。
ValueErrorは「値の変換などに失敗した」という種類のエラーです。
入力できるまで繰り返す
while True:
try:
score = int(input("点数: "))
break
except ValueError:
print("数字で入力してください")
正しく入力できるとbreakでwhile文を抜けます。
ファイルへ書き込む
with open("memo.txt", "w", encoding="utf-8") as file:
file.write("Pythonを勉強中です\n")
| 部分 | 意味 |
|---|---|
| memo.txt | 保存するファイル名 |
| “w” | 書き込みモード |
| encoding=“utf-8” | 日本語を扱う文字コード |
withを使うと、処理が終わった後にファイルが自動で閉じられます。
**“w”は同名ファイルの内容を上書きします。末尾へ追加したい場合は“a”**を使います。
ファイルを読み込む
with open("memo.txt", "r", encoding="utf-8") as file:
text = file.read()
print(text)
**“r”**は読み込みモードです。ファイルが存在しない場合はエラーになるため、実際のアプリではFileNotFoundErrorへの対応も必要です。
小さな練習
名前をinputで受け取り、profile.txtへ保存してください。その後、同じファイルを読み込んで表示しましょう。
模範解答
name = input("名前を入力してください: ")
with open("profile.txt", "w", encoding="utf-8") as file:
file.write(name)
with open("profile.txt", "r", encoding="utf-8") as file:
saved_name = file.read()
print(f"保存した名前: {saved_name}")
解説
最初のopenは"w"なのでファイルへ書き込み、次のopenは"r"なので読み込みます。withを使うと処理が終わったときにファイルが自動で閉じられます。日本語を安全に扱うため、文字コードをUTF-8に指定しています。
まとめ
- tryとexceptで、エラーが起きたときの処理を用意できます。
- withとopenでファイルを安全に開けます。
- 書き込みモードの“w”は既存内容を上書きします。