Wie kann ich das Betriebssystem aufrufen, um eine URL in einem beliebigen Browser des Benutzers zu öffnen? Keine Sorge um die Kompatibilität zwischen Betriebssystemen; Wenn es unter Linux funktioniert, ist das genug für mich!
Wie kann ich das Betriebssystem aufrufen, um eine URL in einem beliebigen Browser des Benutzers zu öffnen? Keine Sorge um die Kompatibilität zwischen Betriebssystemen; Wenn es unter Linux funktioniert, ist das genug für mich!
Antworten:
So öffnen Sie den Standardbrowser des Benutzers mit einer bestimmten URL:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Hier ist 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.
import antigravity
verwendet: hg.python.org/cpython/file/tip/Lib/antigravity.py
Persönlich würde ich das Modul wirklich nicht benutzen webbrowser
.
Es ist ein kompliziertes Durcheinander des Schnüffelns für bestimmte Browser, das den Standardbrowser des Benutzers nicht findet, wenn mehr als ein Browser installiert ist, und keinen Browser findet, wenn er den Namen nicht kennt (z. B. Chrome).
Unter Windows ist es einfach, einfach die os.startfile
Funktion zu verwenden, die auch für eine URL funktioniert. Unter OS X können Sie den open
Systembefehl verwenden. Unter Linux gibt es xdg-open
einen Standardbefehl von freedesktop.org, 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 bietet eine bessere Benutzererfahrung auf Mainstream-Plattformen. Sie könnten webbrowser
vielleicht auf andere Plattformen zurückgreifen . Obwohl es am wahrscheinlichsten ist, wenn Sie sich auf einem obskuren / ungewöhnlichen / eingebetteten Betriebssystem befinden, auf dem keine der oben genannten Funktionen funktioniert, ist die Wahrscheinlichkeit webbrowser
groß, dass auch dies fehlschlägt.
xdg-open
, obwohl es xdg-open
sowieso ein ähnliches Sniffing verwendet). Die Win32-Implementierung wird beispielsweise os.startfile()
bereits verwendet und hat auch einen Fallback.
xdg-open
jetzt auch verwendet. Daher ist diese Antwort auf modernem Python veraltet und es gibt keinen Grund, das Webbrowser-Modul nicht zu verwenden.
Sie können das Webbrowser- Modul verwenden.
webbrowser.open(url)
Schauen Sie sich das Webbrowser-Modul an .