読者です 読者をやめる 読者になる 読者になる

Perl日記

PerlとかRubyとかPHPとかPythonとか

PythonでMacの濁音・半濁音のファイルを扱う

MacはNFD形式で日本語のファイルとかディレクトリを作るので、スクリプト内の日本語でひっかけられない。

import os

os.mkdir("はっぴー")

os.path.exists("はっぴー") #=> True  これは引っかかる

for file in os.listdir("."):
    if file == "はっぴー":   #=> これは引っかからない
        print("はっぴー")


この場合unicodedataモジュールを使って、MacのNFDからNFCに変換すればよい。
あるいは比較対象をNFDにする。

import unicodedata

for file in os.listdir("."):
    if unicodedata.normalize("NFC", file) == "はっぴー":
        print("はっぴー")

# or

for file in os.listdir("."):
    if file == unicodedata.normalize("NFD", "はっぴー"):
        print("はっぴー")