¿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í!

Author: jww, 2010-11-18

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.

 83
Author: kobrien,
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.

 29
Author: bobince,
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)
 5
Author: Kenial,
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)
 4
Author: Ivo Wetzel,
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.

 2
Author: Aaron Digulla,
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