web-dev-qa-db-fra.com

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

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!

63
Bolster

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.

100
kobrien

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.

32
bobince

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)
5
Kenial

Vous pouvez utiliser le module webbrowser .

webbrowser.open(url)
5
Ivo Wetzel

Jetez un œil au module webbrowser .

2
Aaron Digulla