¿Qué puedo usar para llamar al sistema operativo para abrir una URL en el navegador que el usuario tenga como predeterminado? No me preocupa la compatibilidad entre sistemas operativos; ¡si funciona en linux eso es suficiente para mí!¿Llamar al sistema operativo para abrir la url?
Respuesta
Aquí es cómo abrir el navegador predeterminado del usuario con una determinada URL:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Aquí está la documentación sobre esta funcionalidad. Es parte de stdlibs de Python:
http://docs.python.org/library/webbrowser.html
He probado esto con éxito en Linux, Ubuntu 10.10.
FWIW también funciona en Windows. – martineau
Lo pruebo en Ubuntu 12.04 y funciona bien también, –
Funciona en Mac. – daviewales
Eche un vistazo a webbrowser module.
Puede usar el módulo webbrowser.
webbrowser.open(url)
Personalmente yo realmente no utilice el módulo webbrowser
.
Es un lío complicado de olfatear para determinados navegadores, que no encontrarán el navegador predeterminado del usuario si tienen más de uno instalado, y no encontrarán un navegador si no conocen el nombre (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 comando estándar freedesktop.org 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 proporcionará una mejor experiencia de usuario en plataformas convencionales. Puede recurrir al webbrowser
en otras plataformas, tal vez. Aunque lo más probable es que si estás en un sistema operativo oscuro/inusual/incrustado en el que ninguno de los anteriores funciona, las posibilidades son webbrowser
también fallarán.
Acabo de consultar la fuente de navegador web, y no estoy seguro de estar de acuerdo con usted. Solo el sniffing de Unix parece poco confiable, e incluso debería funcionar correctamente en KDE o GNOME (probablemente podría usar un parche para usar 'xdg-open', aunque' xdg-open' también usa sniffing similar). La implementación de win32, por ejemplo, ya usa 'os.startfile()', y también tiene un respaldo. –
El módulo webbrowser funcionó para mí cuando tenía Safari como mi navegador predeterminado, y también cuando tenía Chrome como mi navegador predeterminado en Mac. – daviewales
Tenga en cuenta que webbrowser también usa 'xdg-open' ahora. Por lo tanto, esta respuesta está desactualizada en python moderno y no hay ninguna razón para no usar el módulo webbrowser. – Chronial
Entonces, ¿cómo trata de mezclar códigos de @kobrien y @bobince arriba:
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)
- 1. Llamadas al sistema operativo desde el script bash
- 2. Detectar el sistema operativo
- 3. Sistema operativo recomendado para Visual Studio 2008
- 4. Recursos para desarrollar un sistema operativo
- 5. Requisitos del sistema operativo para arc4random_uniform()
- 6. ¿El mejor sistema operativo educativo para estudiar?
- 7. Rubyzip vs compresión de sistema operativo nativo
- 8. jQuery - detectando el sistema operativo y la versión del sistema operativo
- 9. Desarrollo de un sistema operativo
- 10. Desarrollo de un sistema operativo para la arquitectura x86
- 11. Familia de sistema operativo predeterminada para la implementación
- 12. sistema operativo y aplicaciones WPF
- 13. Detectar sistema operativo en Clojure
- 14. Sistema operativo de espacio aislado
- 15. ¿Por qué ir al sistema operativo de 64 bits?
- 16. Android: URL especial para abrir Marketplace en una aplicación específica.
- 17. Actualizar sistema operativo Android programáticamente
- 18. ¿Cómo copiar un archivo desde VirtualBox al sistema operativo host?
- 19. Cómo determinar el sistema operativo
- 20. Suprimir la consola al llamar "sistema" en C++
- 21. ¿Algún sistema operativo implementa el almacenamiento en búfer para malloc()?
- 22. Llamar al símbolo del sistema y dejar la ventana abierta
- 23. Prueba de sistema operativo en tiempo real para dureza
- 24. Pregunta de arranque del sistema operativo básico
- 25. ¿Cómo detectar el sistema operativo en ejecución?
- 26. Diferencias fundamentales entre el sistema operativo Linux y el sistema operativo móvil (Android)
- 27. Cómo obtener la versión del sistema operativo asp.net
- 28. ¿Estoy codificando para un sistema operativo o el procesador?
- 29. El sistema operativo está eliminando el hilo
- 30. mejor práctica para usar la url de acción al llamar a ajax en cakePHP
¿que os buscando desde Windows, MacOS y Linux todos tienen una convención de llamada diferente. – koblas