今日 Python3 で URI デコードをやろうとした。
Python 3 Porting Guide ? Porting to Python 3 v1 documentation
Python2 との違い一覧を作ってくれている人がいる、アリガトメルシー。
urllib.unquote は urllib.parse.unquote なのね。
#!/usr/bin/env python3 import urllib print(dir(urllib)) ''' output ['__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '__path__'] ''' import urllib.parse print(dir(urllib)) ''' output ['__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '__path__', 'parse'] '''
なんだこりゃ…
当然そうなるよな、何故だ?
/usr/lib64/python3.3/urllib
を覗いてみると
__init__.py が 0 byte だとこういう動作になるってことなのか。
なるほど、多分どこかでこの知識が役に立つだろう。
#!/usr/bin/env python3 import urllib.parse from gi.repository import GLib uri = "file:///path/to/My%20Waifu.jpg" path = urllib.parse.unquote(uri) print(path) #=> file:///path/to/My Waifu.jpg path, host = GLib.filename_from_uri(uri) print(path) #=> /path/to/My Waifu.jpg
ただ unquote だと file:/// とかは普通に残るんだよな。
ホスト名があった場合(LAN 上ファイル等)も面倒だし。
Linux なら GLib を使ったほうがいいや。
こんな楽な手段を知っているので Python モジュールの知識が全然無いというのも考え物だな。