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 n'importe quel navigateur que l'Utilisateur a par défaut? Pas inquiet de la compatibilité inter-OS; si cela fonctionne sous linux, c'est assez pour moi!

55
demandé sur jww 2010-11-18 19:16:01

5 réponses

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é. Il fait partie des stdlibs de Python:

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

Je l'ai testé avec succès sur Linux, Ubuntu 10.10.

83
répondu kobrien 2015-06-07 07:38:38

Personnellement, je ne voudrais vraiment pasutiliser 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'il en a plus d'un installé, et ne trouvera pas de navigateur s'il ne connaît pas son nom (par exemple Chrome).

Mieux sur Windows est simplement d'utiliser la fonction 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, un freedesktop.org norme commande 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 plates-formes grand public. Vous pourriez revenir à webbrowser sur d'autres plates-formes, peut-être. Bien que très probablement si vous êtes sur un système d'exploitation obscur/inhabituel/Embarqué où aucun des travaux ci-dessus, les chances sont webbrowser échouera aussi.

29
répondu bobince 2010-11-18 16:57:42

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
répondu Kenial 2014-01-08 20:27:24

Vous pouvez utiliser le modulewebbrowser .

webbrowser.open(url)
4
répondu Ivo Wetzel 2010-11-18 16:19:26

Jetez un oeil au module webbrowser .

2
répondu Aaron Digulla 2010-11-18 16:19:10