PYTHON MEBY

Pythonでファイルの上書き・削除

この記事では、Python でファイルの上書きと削除を行う方法について説明します。os モジュールと pathlib モジュールを使った安全なファイル操作の方法を学びます。

目次

ファイルの上書き

Pythonでファイルの上書きは、書き込みモード('w')でファイルを開いて書き込むことで行います。ファイルが存在しない場合は新規作成されます。既存のファイルを開くと、内容はすべて削除されてから新しい内容が書き込まれます。

try:
    with open('output.txt', 'w') as f:
        f.write('新しいテキスト')
except Exception as e:
    print(f"エラーが発生しました: {e}")

この例では、'output.txt' というファイルに '新しいテキスト' を書き込んでいます。ファイルが存在すれば上書きされ、存在しなければ新規に作成されます。エラー処理は`try...except`ブロックで行われています。

try:
    with open('my_file.txt', 'w') as f:
        f.write('This is some text.')
    print("ファイル 'my_file.txt' が作成または上書きされました。")
except OSError as e:
    print(f"ファイル操作中にエラーが発生しました: {e}")

この例では、ファイルが存在しない場合に作成され、ファイルが存在する場合には上書きされます。`OSError`例外をキャッチしてエラーメッセージを表示しています。

ファイルの削除

Pythonでファイルを削除するには、osモジュールのremove()関数を使用します。

import os
try:
    os.remove('output.txt')
    print('ファイルが削除されました。')
except FileNotFoundError:
    print('ファイルが見つかりません。')
except OSError as e:
    print(f'ファイル削除中にエラーが発生しました: {e}')

この例では、'output.txt'というファイルを削除しようとします。ファイルが存在しない場合はFileNotFoundError、その他のエラーが発生した場合はOSError例外が投げられます。

import os
file_path = 'delete_me.txt'
try:
    os.remove(file_path)
    print(f"ファイル '{file_path}' が削除されました。")
except FileNotFoundError:
    print(f"ファイル '{file_path}' は見つかりませんでした。")
except PermissionError:
    print(f"ファイル '{file_path}' を削除する権限がありません。")
except OSError as e:
    print(f"ファイル '{file_path}' の削除中にエラーが発生しました: {e}")

この例では、エラー処理をより詳細に行い、FileNotFoundErrorとPermissionErrorを個別に処理します。

エラー処理と例外処理

ファイル操作では、ファイルが存在しない、アクセス権がないなどのエラーが発生する可能性があります。try...exceptブロックを使用してエラーを処理し、プログラムがクラッシュするのを防ぎましょう。

import os
try:
    # ファイル操作
    os.remove('nonexistent_file.txt')
except FileNotFoundError:
    print('ファイルが見つかりません')
except OSError as e:
    print(f'エラーが発生しました: {e}')

この例では、存在しないファイルを削除しようとするため、FileNotFoundErrorが発生します。適切な例外処理により、エラーメッセージが表示されプログラムは継続します。

pathlibを使ったより安全な方法

pathlibモジュールを使うと、ファイルパスをオブジェクトとして扱うことができ、より安全で読みやすいコードを書くことができます。

from pathlib import Path
file_path = Path('my_file.txt')
try:
    file_path.unlink()
    print(f"ファイル '{file_path}' が削除されました。")
except FileNotFoundError:
    print(f"ファイル '{file_path}' は見つかりませんでした。")
except OSError as e:
    print(f"ファイル '{file_path}' の削除中にエラーが発生しました: {e}")

pathlib.Path.unlink()メソッドは、os.remove()関数と同様の機能を持ちます。ただし、pathlibはオブジェクト指向のため、コードがより明確で安全になります。

関連記事