Que puis-je utiliser pour appeler le système d'exploitation pour ouvrir une URL dans le navigateur par défaut de l'utilisateur? Pas préoccupé par la compatibilité entre les systèmes d'exploitation; si cela fonctionne sous linux c'est suffisant pour moi!
Voici comment ouvrir le navigateur par défaut de l'utilisateur avec une URL donnée:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
Voici la documentation sur cette fonctionnalité. Cela fait partie des stdlibs de Python:
http://docs.python.org/library/webbrowser.html
J'ai testé cela avec succès sur Linux, Ubuntu 10.10.
Personnellement, j'ai vraiment je ne voudrais pas utiliser le module webbrowser
.
C'est un gâchis compliqué de renifler pour des navigateurs particuliers, qui ne trouveront pas le navigateur par défaut de l'utilisateur s'ils en ont plus d'un installé, et ne trouveront pas de navigateur s'il n'en connaît pas le nom (par exemple Chrome).
Mieux sous Windows, il suffit d'utiliser le os.startfile
, qui fonctionne également sur une URL. Sous OS X, vous pouvez utiliser la commande système open
. Sous Linux, il y a xdg-open
, une commande standard freedesktop.org prise en charge par GNOME, KDE et 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
Cela donnera une meilleure expérience utilisateur sur les plateformes grand public. Vous pourriez peut-être revenir à webbrowser
sur d'autres plateformes, peut-être. Bien que très probablement si vous êtes sur un système d'exploitation obscur/inhabituel/intégré où aucun des éléments ci-dessus ne fonctionne, il est probable que webbrowser
échouera également.
Alors que diriez-vous de mélanger les codes de @kobrien et @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)
Vous pouvez utiliser le module webbrowser .
webbrowser.open(url)
Jetez un œil au module webbrowser .