PythonでMacOSXのファイル名を取得しようとすると、ひらがなとカタカナの濁点などが分かれてしまうのを解消するメモ。
どうしてかはこことかこのあたりを参照。
この「合併のお知らせ|OKIソフトウェア」のコードを拝借させていただいた。
参考サイトから一部そのままコピペ。(def normalize(s)のとこ)
#!/usr/local/bin/python # *-# -*- coding: utf-8 -*- import os,sys if sys.platform == 'darwin': import popen2 def normalize(s): (rf, wf) = popen2.popen2('/usr/bin/iconv -f UTF-8-MAC -t UTF-8') wf.write(s) wf.close() return rf.read() else: def normalize(s): return s def main(dirpath): getfname = [] for path, dir, files in os.walk(dirpath): for fname in files: getfname.append(fname) return getfname if __name__ == "__main__": dirpath = "/Users/home/hogedir" print "-"*20 print "ファイル名そのまま" print "-"*20 for i in main(dirpath): print i print "-"*20 print "ファイル名を変換" print "-"*20 for j in main(dirpath): print normalize(j)
/Users/home/hogedirにファイル「ABCふげふげ123.eps、ぱけぼけ.eps、漢字ほげほげ.eps」があった場合。
実行結果
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-