91 votes

Appel au système d'exploitation pour ouvrir l'url ?

Que puis-je utiliser pour demander au système d'exploitation d'ouvrir une URL dans le navigateur par défaut de l'utilisateur ? Je ne m'inquiète pas de la compatibilité entre systèmes d'exploitation ; si ça fonctionne sous Linux, ça me suffit !

151voto

kobrien Points 966

Voici comment ouvrir le navigateur par défaut de l'utilisateur avec une url donnée :

import webbrowser

url = "https://www.google.com/"

webbrowser.open(url, new=0, autoraise=True)

Voici la documentation sur cette fonctionnalité. Elle fait partie des stdlibs de Python :

http://docs.python.org/library/webbrowser.html

J'ai testé ceci avec succès sur Linux, Ubuntu 10.10.

46voto

bobince Points 270740

Personnellement, j'ai vraiment ne serait pas utiliser le webbrowser module.

Il s'agit d'un système compliqué de détection de navigateurs particuliers, qui ne trouvera pas le navigateur par défaut de l'utilisateur s'il en a plusieurs d'installés, et ne trouvera pas un navigateur s'il n'en connaît pas le nom (par exemple Chrome).

Sous Windows, la meilleure solution consiste simplement à utiliser la fonction os.startfile qui fonctionne également sur une URL. Sous OS X, vous pouvez utiliser la fonction open commande système. Sous Linux, il y a xdg-open , une commande standard de 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 permettra d'offrir une meilleure expérience utilisateur sur les plateformes grand public. Vous pourriez vous rabattre sur webbrowser sur d'autres plateformes, peut-être. Cependant, si vous êtes sur un système d'exploitation obscur, inhabituel ou intégré où aucune des solutions ci-dessus ne fonctionne, il est probable que webbrowser échouera aussi.

8voto

Ivo Wetzel Points 27802

Vous pouvez utiliser le navigateur web module.

webbrowser.open(url)

7voto

Kenial Points 548

Alors pourquoi ne pas mélanger les codes de @kobrien et @bobince :

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)

2voto

Aaron Digulla Points 143830

Jetez un coup d'œil à la module navigateur web .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X