Cosa posso usare per chiamare il sistema operativo per aprire un URL in qualunque browser l'utente abbia come predefinito? Non è preoccupato per la compatibilità tra i sistemi operativi; se funziona a Linux questo è abbastanza per me!Chiama al sistema operativo per aprire l'url?
risposta
Ecco come aprire il browser predefinito dell'utente con un dato url:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Ecco la documentazione su questa funzionalità. Fa parte del stdlibs di Python:
http://docs.python.org/library/webbrowser.html
Ho testato questo successo su Linux, Ubuntu 10.10.
FWIW funziona anche su Windows. – martineau
Lo collaudo su Ubuntu 12.04 e funziona anche, –
Funziona su Mac. – daviewales
Dai un'occhiata allo webbrowser module.
È possibile utilizzare il modulo webbrowser.
webbrowser.open(url)
Personalmente, io davvero non utilizzare il modulo webbrowser
.
È un complicato pasticcio di sniffing per determinati browser, che non troverà il browser predefinito dell'utente se ne ha più di uno installato e non troverà un browser se non ne conosce il nome (ad es. Chrome).
Migliore su Windows è semplicemente utilizzare la funzione os.startfile
, che funziona anche su un URL. Su OS X, è possibile utilizzare il comando di sistema open
. Su Linux c'è xdg-open
, un comando standard freedesktop.org supportato da GNOME, KDE e 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
Ciò consentirà un'esperienza utente migliore sulle piattaforme mainstream. Potresti ricorrere a webbrowser
su altre piattaforme, forse. Anche se molto probabilmente se sei su un OS oscuro/insolito/embedded in cui nessuno dei lavori sopra indicati, le probabilità sono webbrowser
avranno esito negativo.
Ho appena dato un'occhiata all'origine per il web browser, e non sono sicuro di essere d'accordo con te. Solo l'unix sniffing sembra un po 'inaffidabile, e anche dovrebbe funzionare correttamente in KDE o GNOME (probabilmente potrebbe usare una patch per usare 'xdg-open', anche se' xdg-open' usa comunque lo stesso sniffing). L'implementazione win32, ad esempio, utilizza già 'os.startfile()' e ha anche un fallback. –
Il modulo webbrowser ha funzionato per me quando avevo Safari come browser predefinito e anche quando avevo Chrome come browser predefinito su Mac. – daviewales
Nota che webbrowser usa anche 'xdg-open'. Quindi questa risposta è obsoleta su Python moderno e non c'è motivo per non usare il modulo webbrowser. – Chronial
Poi come su mescolare codici di @kobrien e @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)
quale sistema operativo stai cercando a partire da Windows, MacOS e Linux hanno tutti una diversa convenzione di chiamata. – koblas