芋の独り言

当ブログへのアクセスは当ブログのプライバシーポリシーに同意したものとみなします.

ファイルやフォルダを作る際にファイル名やフォルダ名に注意(使用不可な文字は置換すべし)

with open()os.makedirs()でファイルやフォルダを作成する際に, ファイル名やフォルダ名がOSで無効なものだと, 当然のことですがエラーが起きてスクリプトが止まってしまいます.

Windowsでファイル名やフォルダ名に無効な文字は以下の半角文字です.

\/:*?"<>|

エクスプローラーで文字を打つと以上の文字が使用できないことが表示されます. \Windows環境では¥です.

以上のことをついつい忘れてスクリプトを書き,ファイルやフォルダ作成の際にエラーが... なので,こうしてブログ記事としてメモしました.
以上の文字をどうしてもファイル名やフォルダ名に使いたい場合は全角にすれば使えます. なのでreplaceで置換すればよいです.

title = "ファイル名!?"
title = title.replace("?","?")
title = title.replace(":",":")
title = title.replace("|","-")
title = title.replace("*","*")
title = title.replace("\t","")
title = title.replace('"','”')
title = title.replace("<","<")
title = title.replace(">",">")
title = title.replace("|","|")

replace("\t","")としていますが,replace("\\","")でいい,というよりstrip()とかで空白文字は中のも除外できるかな...? 出来ない場合はreplaceで置換していけばいいです.

ファイル名やフォルダ名に使えない文字を一括して変換したいならば,

>>> import re
>>> title = 'ファイル名!\/:*?"<>|'
>>> ptn  = re.compile('[/:*?"<>|]')
>>> title = ptn.sub("",title).replace("\\","")
>>> title
'ファイル名!'

なぜか/だけはre.subで取り除けなかったので,replaceで置換しています.