今日 Python3 で URI デコードをやろうとした。
Python 3 Porting Guide ? Porting to Python 3 v1 documentation
Python2 との違い一覧を作ってくれている人がいる、アリガトメルシー。
urllib.unquote は urllib.parse.unquote なのね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/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 だとこういう動作になるってことなのか。
なるほど、多分どこかでこの知識が役に立つだろう。
1 2 3 4 5 6 7 8 9 10 11 12 | #!/usr/bin/env python3 import urllib.parse from gi.repository import GLib path = urllib.parse.unquote(uri) path, host = GLib.filename_from_uri(uri) print (path) #=> /path/to/My Waifu.jpg |
ただ unquote だと file:/// とかは普通に残るんだよな。
ホスト名があった場合(LAN 上ファイル等)も面倒だし。
Linux なら GLib を使ったほうがいいや。
こんな楽な手段を知っているので Python モジュールの知識が全然無いというのも考え物だな。