Как я могу отключить сообщение веб-браузера в python? - PullRequest
11 голосов
/ 24 февраля 2010

В моей программе на python, когда я отправляю пользователя для создания учетной записи gmail с помощью модуля webbrowser, python отображает:

"Пожалуйста, введите ваше имя пользователя Gmail: создано новое окно в существующей сессии браузера."

Есть ли способ избавиться от "созданного нового окна в существующем сеансе браузера", так как он занимает место, где пользователь вводит данные в своей учетной записи Gmail.

Код для этого:

webbrowser.open('https://www.google.com/accounts/NewAccount?service=mail')  
gmail_user = raw_input('Please enter your Gmail username: ')

РЕДАКТИРОВАТЬ: После опробования обоих предложений Алекса Мартелли код: http://pastebin.com/3uu9QS4A

РЕДАКТИРОВАТЬ 2: Я решил просто попросить пользователей перейти на страницу регистрации gmail вместо того, чтобы отправлять их туда, поскольку это намного проще, и в результате этого ничего не получается -м) ошибки.

Ответы [ 2 ]

12 голосов
/ 24 февраля 2010

Как отметил С.Лотт в комментарии, вам, вероятно, следует сначала выполнить raw_input; однако, по сути, это не подавляет сообщение от webbrowser, как вы спрашиваете - оно просто откладывает его.

Чтобы фактически подавить сообщение, вы можете временно перенаправить стандартный вывод или стандартную ошибку - в зависимости от того, какой из двух выбранных вами браузеров использует для отправки этого сообщения. Вероятно, бесполезно перенаправлять их на уровне Python (через sys.stdout или sys.stderr), поскольку ваш браузер будет выводить данные напрямую; скорее вы можете сделать это на уровне операционной системы, например, для стандартного вывода:

import os
gmail_user = raw_input('Please enter your Gmail username: ')
savout = os.dup(1)
os.close(1)
os.open(os.devnull, os.O_RDWR)
try:
   webbrowser.open(whatever)
finally:
   os.dup2(savout, 1)

(для стандартной ошибки вместо стандартного вывода используйте 2 вместо 1). Это довольно низкоуровневое программирование, но, поскольку модуль веб-браузера не дает вам «ловушек» для управления способом открытия браузера, это почти единственный выбор (более или менее) обеспечить подавление этого сообщения.

2 голосов
/ 05 октября 2013

Существует ответ на другой вопрос , который уместен здесь.

Вы можете использовать

webbrowser.get().open('https://www.google.com/accounts/NewAccount?service=mail')

У меня установлен xdg-open (Linux), что привело к сообщению START / usr / lib / firefox / firefox при использовании webbrowser.open(). При использовании вышеописанного метода это сообщение не отображается (и xdg-open все еще используется).

Это подавляет вывод на стандартный вывод. Это не подавляет вывод в stderr для всех настроек. У меня все еще есть сообщения об ошибках в терминале.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...