Wie kann ich das Betriebssystem aufrufen, um eine URL in einem beliebigen Browser zu öffnen, den der Benutzer standardmäßig verwendet? Keine Sorge um die Kompatibilität zwischen Betriebssystemen. Wenn es unter Linux funktioniert, ist das genug für mich!
So öffnen Sie den Standardbrowser des Benutzers mit einer bestimmten URL:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Hier finden Sie die Dokumentation zu dieser Funktionalität. Es ist Teil von Pythons Stdlibs:
http://docs.python.org/library/webbrowser.html
Ich habe dies erfolgreich unter Linux, Ubuntu 10.10 getestet.
Persönlich würde ich wirklich nicht das webbrowser
Modul verwenden.
Es ist ein kompliziertes Schnüffeln für bestimmte Browser, bei dem der Standardbrowser des Benutzers nicht gefunden wird, wenn mehr als ein Browser installiert ist, und bei dem kein Browser gefunden wird, dessen Name nicht bekannt ist (z. B. Chrome).
Besser unter Windows ist es, einfach das os.startfile
Funktion, die auch für eine URL funktioniert. Unter OS X können Sie den Systembefehl open
verwenden. Unter Linux gibt es xdg-open
, ein freedesktop.org-Standardbefehl, der von GNOME, KDE und XFCE unterstützt wird.
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
Dies wird eine bessere Benutzererfahrung auf Mainstream-Plattformen geben. Vielleicht könnten Sie auf anderen Plattformen auf webbrowser
zurückgreifen. Obwohl es am wahrscheinlichsten ist, wenn Sie sich auf einem unbekannten/ungewöhnlichen/eingebetteten Betriebssystem befinden, auf dem keines der oben genannten Probleme auftritt, besteht die Möglichkeit, dass webbrowser
ebenfalls fehlschlägt.
Wie wäre es dann mit dem Mischen der Codes von @kobrien und @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)
Sie können das Webbrowser Modul verwenden.
webbrowser.open(url)
Schauen Sie sich das Webbrowser-Modul an.