【Python】第7章第8回:データ処理におけるエラーハンドリング
本記事では、Pythonにおけるエラーハンドリングの基本と実践例を解説します。安全で効率的なデータ処理を実現するためのスキルを身につけましょう。
0. 記事の概要
この記事を読むメリット
- エラー回避スキルの向上:エラーハンドリングの仕組みと応用方法を学べます。
- 安全なデータ処理:想定外のエラーが発生してもプログラムを安定して実行可能にします。
- 実践力の向上:データ処理の各場面でのエラーを防ぐ手法を具体例で理解できます。
この記事で学べること
- Pythonにおけるエラーハンドリングの基本構文
- 実際のデータ処理場面での応用例
- トラブルシューティングのスキル
1. エラーハンドリングの基本
1.1 try-except構文
# 基本的なエラーハンドリング
try:
num = int(input("数字を入力してください: "))
print(f"入力された数字: {num}")
except ValueError:
print("エラー: 数字を入力してください。")
1.2 複数の例外を処理
# 複数の例外を処理
try:
num = int(input("数字を入力してください: "))
result = 10 / num
print(f"結果: {result}")
except ValueError:
print("エラー: 数字を入力してください。")
except ZeroDivisionError:
print("エラー: 0で割ることはできません。")
動作解説
- try: 例外が発生する可能性のあるコードを記述。
- except: 発生した例外に応じたエラーメッセージを表示。
- 複数の例外処理: 異なる種類のエラーを個別に処理。
2. 実践例:ファイル操作時のエラーハンドリング
2.1 ファイル読み込み時のエラーハンドリング
# ファイル読み込み時のエラー処理
try:
with open("example.txt", "r") as file:
data = file.read()
print(data)
except FileNotFoundError:
print("エラー: ファイルが見つかりません。")
except IOError:
print("エラー: ファイルの読み取り中に問題が発生しました。")
2.2 ファイル書き込み時のエラーハンドリング
# ファイル書き込み時のエラー処理
try:
with open("output.txt", "w") as file:
file.write("これはテストデータです。")
except IOError:
print("エラー: ファイルの書き込み中に問題が発生しました。")
動作解説
- ファイル読み込み中に
FileNotFoundError
を処理します。 - 書き込み時の
IOError
に対処してデータ損失を防ぎます。
3. エラーハンドリングを応用したデータ処理
3.1 入力データのバリデーション
# 入力データのバリデーション
def get_positive_number():
while True:
try:
num = int(input("正の整数を入力してください: "))
if num <= 0:
raise ValueError("正の整数である必要があります。")
return num
except ValueError as e:
print(f"エラー: {e}")
number = get_positive_number()
print(f"入力された数値: {number}")
動作解説
ValueError
を発生させ、負の数やゼロの入力を防ぎます。- 入力が有効になるまで繰り返し入力を要求します。
4. 練習問題
以下の課題に挑戦してみましょう。
- 数値入力を求め、
ZeroDivisionError
を回避しながら割り算を行うプログラムを作成してください。 - 存在しないファイルを開こうとして
FileNotFoundError
を処理するコードを書いてください。 - リストのインデックスを指定する際に
IndexError
を防ぐプログラムを作成してください。
5. 練習問題の解答と解説
問1〜3の解答例
# 問1: ZeroDivisionErrorを回避
try:
num = int(input("分母を入力してください: "))
result = 10 / num
print(f"結果: {result}")
except ZeroDivisionError:
print("エラー: 分母には0以外を入力してください。")
# 問2: FileNotFoundErrorを処理
try:
with open("nonexistent.txt", "r") as file:
print(file.read())
except FileNotFoundError:
print("エラー: 指定されたファイルが存在しません。")
# 問3: IndexErrorを防ぐ
data = [10, 20, 30]
try:
index = int(input("インデックスを入力してください: "))
print(f"値: {data[index]}")
except IndexError:
print("エラー: 無効なインデックスです。")
6. まとめ
本記事では、Pythonにおけるエラーハンドリングの基本構文と実践例を学びました。これらを活用して、安全で効率的なデータ処理を目指しましょう。