GIO tutorial: File operations ? Johannes Sasongko’s blog
こんな Blog を見つけた。
そうか、こうやれば gio.File からファイルタイプが取得できるんだ。
これでやっと gnomevfs の呪縛から逃れられそうだ。
もうすぐというか GNOME 3.0 から使えなくなるはず。
PyGObject Reference Manual
gio Constants#gio-file-attribute-constants
上記を見れば名前空間は何を指定すればいいか解るね。
standard::type 指定だと GFileType が戻ってくるので standard::content-type かな。
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys import gio s = sys.argv[1] f = gio.File(s) info = f.query_info("standard::content-type") print "name: {0}\ntype: {1}".format(s, info.get_content_type())
おぉ、これで拡張子が無くても content_type が取得できる!
MIME Type とずっと書いていたけど content_type であったみたい…
沢山の info を query するにはコンマ区切りで書くかワイルドカードを使う。
ただしコンマの前後にスペースを入れると上手くいかないのは何故だろう。
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys import gio s = sys.argv[1] f = gio.File(s) # Not Space info = f.query_info("standard::type,standard::size,standard::content-type") #info = f.query_info("*") print info.get_file_type() print info.get_size() print info.get_content_type()
ついでに GStreamer から得られる uri も gio で変換できるようだ。
uri = self.player.get_property("uri") #t = urllib.unquote(uri)[7:] t = gio.File(uri).get_parse_name()
意図的に日本語ファイル名にしても問題なく変換できた。
というより gio.File() ってフルパスでも uri でもどっちでもいいんだね。
とにかくこれなら urllib モジュールもいらないな、gio スゲェ便利。
ということで Y901x 0.3.4 公開。
そうそう、0.3.3 で dbus を取っ払ったんで本体は gtk.Window 派生に変更した。
多重起動防止はなくなったけどやっと普通な PyGtk アプリになった感じ。
追加機能はほとんどやらずにこんなことばかりやっていていいものか…