подавить / перенаправить stderr при вызове python webrowser - PullRequest
6 голосов
/ 30 августа 2009

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

webbrowser.open_new(url)

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

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

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

Где log это временный файл, а затем открывать другие вкладки с помощью webbrowser.open_new.

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

Ответы [ 3 ]

5 голосов
/ 30 августа 2009

Что дает вам webbrowser.get ()?

Если вы делаете

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

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

0 голосов
/ 30 августа 2009

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

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

os.startfile(url)

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

p = subprocess.Popen(cmdline)

Похоже, что только браузеры Unix имеют возможность перенаправлять stderr в модуль веб-браузера. Вы должны быть в состоянии узнать, какой тип браузера вы получаете, выполнив

>>> webbrowser.get('firefox')

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

0 голосов
/ 30 августа 2009

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

...