web-dev-qa-db-ja.com

オペレーティングシステムを呼び出してURLを開きますか?

ユーザーがデフォルトで使用しているブラウザでOSを呼び出してURLを開くために使用できるものは何ですか? OS間の互換性について心配していません。 Linuxで動作する場合はそれで十分です!

63
Bolster

指定されたURLでユーザーのデフォルトブラウザを開く方法は次のとおりです。

import webbrowser

webbrowser.open(url[, new=0[, autoraise=True]])

この機能に関するドキュメントは次のとおりです。 Pythonのstdlibの一部です:

http://docs.python.org/library/webbrowser.html

Linux、Ubuntu 10.10でこれをテストしました。

100
kobrien

個人的に私は本当にしないwebbrowserモジュールを使用します。

特定のブラウザのスニッフィングは複雑です。複数のブラウザがインストールされている場合、ユーザーのデフォルトのブラウザは見つかりません。また、名前がわからない場合はブラウザが見つかりません(Chromeなど)。

Windowsでは、単にos.startfile関数は、URLでも機能します。 OS Xでは、openシステムコマンドを使用できます。 Linuxではxdg-open、GNOME、KDE、XFCEでサポートされているfreedesktop.org標準コマンド。

if sys.platform=='win32':
    os.startfile(url)
Elif sys.platform=='darwin':
    subprocess.Popen(['open', url])
else:
    try:
        subprocess.Popen(['xdg-open', url])
    except OSError:
        print 'Please open a browser on: '+url

これにより、メインストリームプラットフォームでのユーザーエクスペリエンスが向上します。他のプラットフォームでは、おそらくwebbrowserにフォールバックできます。上記のいずれも機能しない、不明瞭/異常/組み込みOSを使用している場合は、ほとんどの場合、webbrowserも失敗します。

32
bobince

それでは、@ kobrienと@bobinceのコードを混ぜてみましょう:

import subprocess
import webbrowser
import sys

url = 'http://test.com'
if sys.platform == 'darwin':    # in case of OS X
    subprocess.Popen(['open', url])
else:
    webbrowser.open_new_tab(url)
5
Kenial

webbrowser モジュールを使用できます。

webbrowser.open(url)
5
Ivo Wetzel

webbrowser module をご覧ください。

2
Aaron Digulla