mieki256's diary



2008/06/21() [n年前の日記]

#1 [python] PythonからWebブラウザを起動する方法がわからない

アプリのヘルプ文書をhtmlで用意するとして、それをwxPythonで作ったアプリから開く方法がわからない。メニューのヘルプ→ヘルプ、を選んだら、html文書を各環境の標準ブラウザで開かせたいのだけど。

Python のモジュールに _webbrowser という名前そのまんまのモノがあって。よく見かける、httpから始まるURLだったら、webbrowser.open(URL) としてやるだけでブラウザは起動する。が、ローカルHDD内に入ってる、htmlファイルのパスを ―― 「C:\\hoge\\fuga」+「/piyo/index.html」なんてのを渡そうとすると、エラーが出てしまう。

_urllib というモジュールの中に、pathname2url(path) というメソッド(?)があって。「ローカルシステムにおける記法で表されたパス名 path を、URL におけるパス部分の形式に変換」してくれるらしい。が、前述のパスを渡すと、「///C|/hoge/fuga/piyo/index.html」という記述になる。得られた文字列の頭に「file:」でもつけたして webbrowser.open(URL) を呼ぶと、Firefox から「file:///C なんてアドレスは知らんがな」的文句を言われてしまうわけで。

IEはどうだったか知らないけれど、Firefoxの場合、「|」が複数のURLを渡すための区切り文字になっていたような気がする。なもんだから、「file:///C|/hoge/fuga/piyo/index.html」をFirefoxに渡すと、「file:///C」と「/hoge/fuga/piyo/index.html」という2つのURLモドキを渡してしまうのではないか。と想像。

OSの関連付けに従ってファイルを開く、 _os.startfile() という手もあるらしいと知る。

カレントディレクトリを「C:\\hoge\\fuga\\piyo\\」にしてもOKなのであれば、webbrowser.open("index.html") で開けるみたい、ではある。しかし、カレントディレクトリを「C:\\hoge\\fuga\\」にして、webbrowser.open("piyo/index.html") ではダメ。

アレ? webbrowser.open("C:\\hoge\\fuga\\piyo\\index.html") であっさりブラウザで開けてしまった。そのOSのパス区切り文字を正しく使ったパスを与えてやれば、問題なく動く、のであらうか。であれば、
path = os.path.abspath("piyo/index.html")
webbrowser.open(path)
みたいな感じでいいのかな?

以上です。

過去ログ表示

Prev - 2008/06 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project