2009-08-29 1 views
6

У меня есть программа питона, которая открывает несколько URL-адресов в раздельных вкладках в новом окне браузера, однако при запуске программы из командной строки и откройте браузер, используяподавляют/перенаправлять поток ошибки при вызове питона webrowser

webbrowser.open_new(url) 

Stderr от firefox отпечатывается в bash. Глядя на документах, я не могу найти способ переориентировать или подавлять их

Я прибег к использованию

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

Где бревно представляет собой временный файл & затем открыть другие вкладки с webbrowser.open_new.

Есть ли способ сделать это в модуле веб-браузера?

ответ

5

Что вам предлагает Webbrowser.get()?

Если вы

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

, то вы не должны видеть никаких выходных данных. Модуль webbrowser выбирает оставить stderr для некоторых браузеров - в частности, текстовых браузеров, а затем тех, где он не определен. Для всех UnixBrowsers, которые задали фон True, никакой вывод не должен быть видимым.

0

Как насчет отправки вывода на /dev/null вместо временного файла?

0

Я думаю, что Мартин прав насчет систем Unix, но похоже, что в Windows все по-другому. Это в системе Windows?

В Windows это выглядит как webbrowser.py либо собирается дать вам webbrowser.WindowsDefault браузер, который открывает URL с помощью

os.startfile(url) 

или Firefox присутствует он собирается дать вам webbrowser.BackgroundBrowser , который запускает браузер на Windows, используя:

p = subprocess.Popen(cmdline) 

Это выглядит как только Unix-браузеры имеют возможность перенаправлять поток ошибок в модуле WebBrowser. Вы должны быть в состоянии узнать, какой тип браузера вы делаете, делая

>>> webbrowser.get('firefox') 

В интерактивной консоли Python.