2009-08-29 10 views
6

J'ai un programme python qui ouvre plusieurs urls dans des onglets séparés dans une nouvelle fenêtre du navigateur, mais quand je lance le programme à partir de la ligne de commande et ouvrez le navigateur en utilisantsuppress/redirect stderr lorsque vous appelez python webrowser

webbrowser.open_new(url) 

Le stderr de firefox imprime à bash. En regardant les documents que je ne peux pas sembler trouver un moyen de rediriger ou les supprimer

J'ai eu recours à l'utilisation

browserInstance = subprocess.Popen(['firefox'], stdout=log, stderr=log) 

Où est un journal tempfile & puis en ouvrant les autres onglets avec webbrowser.open_new. Y at-il un moyen de le faire dans le module webbrowser?

Qu'en est-il de l'envoi de la sortie à /dev/null au lieu d'un fichier temporaire?

Répondre

5

Qu'est-ce que webbrowser.get() vous offre?

Si vous

webbrowser.get('firefox').open(url) 

alors vous ne devriez pas voir aucune sortie. Le module webbrowser choisit de quitter stderr pour certains navigateurs - en particulier les navigateurs de texte, et ceux où cela n'est pas certain. Pour tous les UnixBrowser ayant défini l'arrière-plan sur True, aucune sortie ne doit être visible.

0

0

Je pense que Martin a raison sur les systèmes Unix, mais il semble que les choses soient différentes sur Windows. Est-ce sur un système Windows?

Sur Windows, il ressemble à webbrowser.py est soit va vous donner un navigateur webbrowser.WindowsDefault, qui ouvre l'URL en utilisant

os.startfile(url) 

ou si Firefox est présent, il va vous donner un webbrowser.BackgroundBrowser , qui démarre le navigateur sur Windows en utilisant:

p = subprocess.Popen(cmdline) 

Il ressemble à Unix que les navigateurs ont la possibilité de rediriger stderr dans le module WebBrowser. Vous devriez être capable de savoir quel type de navigateur vous obtenez en faisant

>>> webbrowser.get('firefox') 

Dans une console interactive Python.