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
で置換しています.