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!
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.
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.
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 modulewebbrowser .
webbrowser.open(url)