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!
python
linux
url
operating-system
Nackenrolle
quelle
quelle
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.
quelle
import antigravity
verwendet: hg.python.org/cpython/file/tip/Lib/antigravity.pyPersö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 denopen
Systembefehl verwenden. Unter Linux gibt esxdg-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 Wahrscheinlichkeitwebbrowser
groß, dass auch dies fehlschlägt.quelle
xdg-open
, obwohl esxdg-open
sowieso ein ähnliches Sniffing verwendet). Die Win32-Implementierung wird beispielsweiseos.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.
quelle
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)
quelle
Schauen Sie sich das Webbrowser-Modul an .
quelle