Co mogę użyć, aby wywołać system operacyjny w celu otwarcia adresu URL w dowolnej przeglądarce domyślnie używanej przez użytkownika? Nie martwisz się kompatybilnością z różnymi systemami operacyjnymi; jeśli działa w Linuksie, to wystarczy dla mnie!Zadzwoń do systemu operacyjnego, aby otworzyć URL?
Odpowiedz
Oto jak otworzyć domyślną przeglądarkę użytkownika z danego adresu URL:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Oto dokumentacja o tej funkcjonalności. To część stdlibs Pythona:
http://docs.python.org/library/webbrowser.html
ja testowałem to z powodzeniem w systemach Linux, Ubuntu 10.10.
FWIW działa również w systemie Windows. – martineau
Testuję go na Ubuntu 12.04 i działa też dobrze, –
Działa na Mac. – daviewales
Spójrz na webbrowser module.
Można użyć modułu webbrowser.
webbrowser.open(url)
Osobiście naprawdę nie byłby używać modułu webbrowser
.
To skomplikowany bałagan dla wąchania określonych przeglądarek, które nie znajdą domyślnej przeglądarki użytkownika, jeśli mają zainstalowaną więcej niż jedną, i nie znajdą przeglądarki, jeśli nie zna jej nazwy (np. Chrome).
Lepsze w systemie Windows jest po prostu użycie funkcji os.startfile
, która działa również na adres URL. W systemie OS X można użyć polecenia systemowego open
. W systemie Linux jest xdg-open
, standardowa komenda freedesktop.org obsługiwana przez GNOME, KDE i XFCE.
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
Zapewni to lepszą obsługę użytkowników na popularnych platformach. Możliwe, że możesz wrócić do webbrowser
na innych platformach. Chociaż najprawdopodobniej w przypadku mało znanego/nietypowego/wbudowanego systemu operacyjnego, gdzie żadna z powyższych czynności nie zadziała, prawdopodobnie ulegną one również awarii.
Właśnie sprawdziłem źródło dla przeglądarki internetowej i nie jestem pewien, czy się z tobą zgadzam. Tylko wąsy unixowe wyglądają trochę niewiarygodnie, a nawet powinny działać poprawnie w KDE lub GNOME (prawdopodobnie użyłoby to łatki do użycia 'xdg-open', chociaż' xdg-open' i tak używa podobnego sniffingu). Na przykład implementacja win32 używa już 'os.startfile()' i ma również rezerwę. –
Moduł webbrowser pracował dla mnie, gdy Safari był moją domyślną przeglądarką, a także gdy miałem Chrome jako domyślną przeglądarkę na Macu. – daviewales
Zauważ, że przeglądarka internetowa używa teraz 'xdg-open'. Tak więc ta odpowiedź jest nieaktualna na nowoczesnym pythonie i nie ma powodu, aby nie używać modułu przeglądarki. – Chronial
Potem jak o mieszanie kodów @kobrien i @bobince up:
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)
Co os szukasz od Windows, MacOS i Linux mają inną konwencję telefonicznej. – koblas