¿Llamar al sistema operativo para abrir url?
¿Qué puedo usar para llamar al sistema operativo para abrir una URL en cualquier navegador que el usuario tenga por defecto? No me preocupa la compatibilidad entre sistemas operativos; si funciona en Linux eso es suficiente para mí!
5 answers
Aquí está cómo abrir el navegador predeterminado del usuario con una url dada:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Aquí está la documentación sobre esta funcionalidad. Es parte de los stdlibs de Python:
Http://docs.python.org/library/webbrowser.html
He probado esto con éxito en Linux, Ubuntu 10.10.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-07 07:38:38
Personalmente realmente no usaría el módulo webbrowser
.
Es un lío complicado de olfatear para navegadores particulares, que no encontrará el navegador predeterminado del usuario si tiene más de uno instalado, y no encontrará un navegador si no sabe el nombre de la misma (por ejemplo, Chrome).
Mejor en Windows es simplemente usar la función os.startfile
, que también funciona en una URL. En OS X, puede usar el comando del sistema open
. En Linux hay xdg-open
, un freedesktop.org estándar comando soportado por GNOME, KDE y 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
Esto le dará una mejor experiencia de usuario en las plataformas convencionales. Usted podría recurrir a webbrowser
en otras plataformas, tal vez. Aunque lo más probable es que si estás en un sistema operativo oscuro/inusual/incrustado donde no funciona ninguno de los anteriores, es probable que webbrowser
también falle.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-18 16:57:42
Entonces, ¿qué tal mezclar códigos de @ kobrien y @bobince hasta:
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-08 20:27:24
Puede utilizar el módulo webbrowser.
webbrowser.open(url)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-18 16:19:26
Eche un vistazo al módulo webbrowser.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-18 16:19:10