【Python】第6章第6回:ファイルの例外処理
本記事では、Pythonでファイル操作時に発生するエラーを適切に処理するための例外処理について解説します。安全かつ効率的なコードを書くための基礎を学びましょう。
0. 記事の概要
この記事を読むメリット
- 例外処理の基礎を理解:ファイル操作時に発生するエラーを回避するスキルを学べます。
- コードの安全性を向上:予期しないエラーへの対処法を習得できます。
- 実践的な知識を習得:ファイル操作での例外処理を応用したプログラムを作成できます。
この記事で学べること
- Pythonにおける例外処理の基本
- ファイル操作時のよくあるエラーとその対処法
- try-except構文を使った例外処理の実装例
1. ファイル操作でよくあるエラー
1.1 主なエラーの種類
FileNotFoundError
: ファイルが見つからない場合に発生PermissionError
: 読み取り・書き込み権限がない場合に発生IsADirectoryError
: ファイルではなくディレクトリを操作しようとした場合に発生UnicodeDecodeError
: ファイルのエンコーディングが異なる場合に発生
1.2 エラーが発生する例
# ファイルが存在しない場合の例
with open("nonexistent.txt", "r") as file:
content = file.read()
上記コードを実行すると、FileNotFoundError
が発生します。
2. try-exceptを使った例外処理
2.1 基本構文
# try-except構文
try:
処理内容
except エラータイプ:
エラーが発生した場合の処理
2.2 ファイル操作での例
# 例外処理を使ったファイル操作
try:
with open("nonexistent.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("ファイルが見つかりません。")
except PermissionError:
print("ファイルへのアクセス権がありません。")
except Exception as e:
print(f"予期しないエラーが発生しました: {e}")
動作解説
try
ブロックでエラーが発生する可能性のあるコードを記述します。except
ブロックで特定のエラーをキャッチし、対応する処理を行います。- 全てのエラーをキャッチする場合は、
except Exception as e
を使用します。
3. 応用例:複数のエラー処理
3.1 複数ファイルを操作する場合
# 複数ファイル操作の例
try:
with open("file1.txt", "r") as file1, open("file2.txt", "w") as file2:
data = file1.read()
file2.write(data)
except FileNotFoundError:
print("どちらかのファイルが見つかりません。")
except PermissionError:
print("ファイルにアクセスできません。")
4. 練習問題
以下の課題に挑戦してみましょう。
- 存在しないファイルを読み込むコードを書き、
FileNotFoundError
を適切に処理してください。 - 書き込み権限がないファイルへのアクセスで
PermissionError
を処理してください。 - 複数の例外を適切に処理するコードを書いてください。
5. 練習問題の解答と解説
問1〜3の解答例
# 問1: FileNotFoundErrorの処理
try:
with open("nonexistent.txt", "r") as file:
print(file.read())
except FileNotFoundError:
print("ファイルが存在しません。")
# 問2: PermissionErrorの処理
try:
with open("/protected/file.txt", "w") as file:
file.write("データを書き込む")
except PermissionError:
print("書き込み権限がありません。")
# 問3: 複数例外の処理
try:
with open("file1.txt", "r") as file1, open("file2.txt", "w") as file2:
file2.write(file1.read())
except FileNotFoundError:
print("ファイルが見つかりません。")
except PermissionError:
print("ファイルにアクセスできません。")
except Exception as e:
print(f"予期しないエラーが発生しました: {e}")
6. まとめ
本記事では、Pythonでのファイル操作時に発生するエラーを例外処理を使って適切に対応する方法を学びました。安全で効率的なコード作成に役立ててください。