2009-08-29 11 views
6

que tiene un programa en Python que abre varias direcciones URL en pestañas separadas en una nueva ventana del navegador, sin embargo, cuando ejecuto el programa desde la línea de comandos y abrir el navegador usandosuprimir/redirigir stderr al llamar pitón webrowser

webbrowser.open_new(url) 

El stderr de Firefox imprime en bash. En cuanto a la documentación que parece que no puede encontrar una manera de redirigir o suprimirlos

He recurrido al uso de

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

donde log es un archivo temporal & luego abrir las otras fichas con webbrowser.open_new.

¿Hay alguna manera de hacerlo dentro del módulo webbrowser?

Respuesta

5

¿Qué es webbrowser.get() que le ofrece?

Si lo hace

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

, entonces no debe ver ninguna salida. El módulo webbrowser elige dejar stderr para algunos navegadores, en particular los navegadores de texto, y luego aquellos en los que no es seguro. Para todos los UnixBrowsers que han configurado el fondo en True, no se debe ver ninguna salida.

0

¿Qué hay de enviar la salida a /dev/null en lugar de un archivo temporal?

0

Creo que Martin tiene razón acerca de los sistemas Unix, pero parece que las cosas son diferentes en Windows. ¿Esto está en un sistema de Windows?

En Windows parece que webbrowser.py está bien va a darle un navegador webbrowser.WindowsDefault, que abre la url usando

os.startfile(url) 

o si Firefox está presente que va a darle una webbrowser.BackgroundBrowser , que se inicia el navegador en Windows usando:

p = subprocess.Popen(cmdline) 

parece que solamente los navegadores Unix tienen la capacidad de redirigir stderr en el módulo de navegador web. Debería poder averiguar qué tipo de navegador obtiene al hacer

>>> webbrowser.get('firefox') 

En una consola interactiva de Python.