Yukiwikiのページ群の名前をunquoteする(python3)
このダイアリーは、もともとYukiwikiを使っていた時の情報を、記法が似通った場所に移行させたいという事で開設したものでした。その時もごく一部の公開すべきネタは移行しておりました。
ただそれも限界がありますし、Scrapboxは増井さんからお誘いを受けてぼちぼち使っていまして、そろそろYukiwiki時代の全情報を移行しようかなあという気になりました。
Yukiwikiの個々のデータはテキストファイルになっていて、quoteされた文字列がファイル名になっているので、どのファイルが何なのかがわかりにくいのが難点です。そこで、今後の作業に先立ち各ページのファイル名を可視化するため、ファイル名をunquoteすることにしました。
ファイル名を2文字ずつ行列にし、%で挟んで電車つなぎにした上で、urllib.parseに通してunuoteした上で、ファイル名の変更コピーをする作戦です。
pythonの手習い目的です。もっとエレガントな方法があるはずですが、今手出しできる材料ではこれが限界でした。
#エラーと戦っていまだによくわからないけれども。
注意:予め直下に出力ディレクトリ./res/を用意しとかないと死にます。
import os import sys import glob import re import urllib.parse import shutil path = "./cgi-bin/wal/WalWiki/wiki" files = glob.glob(path + '/*.txt') outpath = "./res/" for f in files: val = re.findall(r"[A-Fa-f0-9][A-Fa-f0-9]",f) ch = '%'+'%'.join(val) result = urllib.parse.unquote_plus(ch, encoding='euc_jp', errors='ignore') # print (result) # filenameのエスケープ # result2 = result.replace('/','_') result2 = re.sub(r'[/:]+', '_', result) newname = outpath + result2 + '.txt' # print (newname) shutil.copy(f, newname)