0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで安全なファイル名に変換する正規表現

0
Posted at

Pythonで安全なファイル名に変換する正規表現Tips

Pythonでファイル名を扱う際、不正な文字が含まれているとエラーの原因になります。
特にWindowsでは \ / : * ? " < > | のような文字が使えません。
(今回末端の空白と.も削除してます。)
そこで、安全なファイル名に整形するための関数 sanitize_filename() を紹介します。

import re

def sanitize_filename(name: str, replace_char: str = "_") -> str:
    """
    ファイル名として使えない文字を指定の文字で置換する

    Parameters:
        name (str): 元の文字列
        replace_char (str): 置換後の文字(デフォルトはアンダースコア)

    Returns:
        str: 安全なファイル名
    """
    # Windowsで使えない文字一覧(他OSでも概ね共通)
    invalid_chars = r'[\\/:*?"<>|]'

    # 正規表現で一括置換
    safe_name = re.sub(invalid_chars, replace_char, name)

    # 末尾の空白やピリオドも削除(Windows対策)
    safe_name = safe_name.rstrip(" .")

    return safe_name

使用例

filename = 'example? ver 1*'
safe_filename = sanitize_filename(filename)
print(safe_filename)
# replace_char="-" (アンダーバー以外に変換する場合)

# 出力: example_ ver 1_

このようにして、スクリプトで生成するファイル名やログ出力名を安全に扱えるようにしましょう。

注意: ファイルシステムによって許可される文字は異なるので、用途に応じて調整が必要です。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?