古めのツールでトラブルになる unicode等の文字を使っているファイル名を検出するPythonコード

2025/09/17

プログラム

t f B! P L
古めのプログラムを使っていると、ファイル名に unicode文字が使われていると読み込めない等のトラブルが起こることがあります。
そんな感じのファイル名を探すPythonコードです。

実行すると、カレントフォルダ以下の全てのファイル及びフォルダ名を調べ、エラーが出そうな文字が使われているファイル名を列挙します。
(日本語Windows環境用。CP932外の文字を検出します)
import os

def is_cp932_safe(filename):
    try:
        filename.encode('cp932')
        return True
    except UnicodeEncodeError:
        return False

def find_invalid_filenames(root='.'):
    invalid_files = []
    for dirpath, dirnames, filenames in os.walk(root):
        for name in filenames + dirnames:
            full_path = os.path.join(dirpath, name)
            if not is_cp932_safe(name):
                invalid_files.append(full_path)
    return invalid_files

if __name__ == '__main__':
    invalids = find_invalid_filenames()
    if invalids:
        print("CP932で利用できない文字が含まれているファイル名:")
        for path in invalids:
            print(path)
    else:
        print("CP932で利用できない文字が含まれるファイルは見つかりませんでした")
  

実例

こんな感じのファイルがあるフォルダで実行すると


こんな感じになります。



♡がと「プ」の半濁点がunicode文字です。①は機種依存文字ですが、CP932に含まれているので検出しません。

このブログを検索

Amazon.co.jp[PR]

このブログについて

QooQ