Day 141ファイル名を安全な形式に一括整形する
Pythonコード
1import os2 3def safe_filename(filename):4 # ファイル名から禁止文字を除去5 safe_name = ''.join(c for c in filename if c.isalnum() or c in '-_.' )6 return safe_name7 8def main():9 # カレントディレクトリのファイルを取得10 files = os.listdir()11 for file in files:12 # ファイル名を安全な形式に整形13 safe_name = safe_filename(file)14 # ファイル名を変更15 try:16 os.rename(file, safe_name)17 print(f'{file} -> {safe_name}')18 except OSError as e:19 print(f'エラー: {file} -> {safe_name}, {e}')20 21if __name__ == '__main__':22 main()
解説
- 行1: osモジュールをインポートします。osモジュールは、ファイルやディレクトリを操作するための関数を提供します。
- 行3〜5: safe_filename関数では、ファイル名から禁止文字を除去します。isalnum()関数は、文字が英数字かどうかを判断し、in演算子で指定した文字('-_', '.')が含まれるかどうかを判断します。
- 行6: safe_filename関数の結果を返します。
- 行8〜10: main関数では、カレントディレクトリのファイルを取得します。os.listdir()関数でファイルを取得します。
- 行11〜14: ファイル名を安全な形式に整形し、ファイル名を変更します。safe_filename関数でファイル名を整形し、os.rename()関数でファイル名を変更します。
- 行15〜16: ファイル名の変更結果を表示します。print()関数で変更結果を表示します。try-except文でエラーを捕捉し、エラーが発生した場合にはエラーメッセージを表示します。
次に試してみよう
- ファイル名の整形ルールを変更してみましょう。
- ディレクトリ内のファイルを再帰的に整形してみましょう。
- ファイル名の整形結果をログファイルに保存してみましょう。