如何在python中禁用webbrowser消息?

时间:2010-02-24 01:40:29

标签: python browser

在我的python程序中,当我发送用户使用webbrowser模块创建一个gmail帐户时,python显示:

“请输入您的Gmail用户名:在现有浏览器会话中创建新窗口。”

有没有办法摆脱“在现有浏览器会话中创建新窗口”,因为它占用了用户在其Gmail帐户中输入的空间。

这个代码是:

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

编辑:在尝试了Alex Martelli的两个建议之后,代码为:http://pastebin.com/3uu9QS4A

编辑2:我决定告诉用户转到gmail注册页面,而不是实际发送到那里,因为这样做更简单,结果为no(目前无法解决 - by-me)错误。

2 个答案:

答案 0 :(得分:12)

正如S.Lott在评论中暗示的那样,你应该先做raw_input;但是,这本身并不会抑制来自webbrowser的消息,正如您所要求的那样 - 它只会推迟消息。

要实际禁止消息,您可以暂时重定向标准输出或标准错误 - 您选择的两个浏览器用于发出该消息的两者中的任何一个。在Python级别(通过sys.stdoutsys.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)。这是相当低级的编程,但由于webbrowser模块没有为您提供“钩子”来控制浏览器的打开方式,因此它几乎是(或多或少)确保抑制该消息的唯一选择。 / p>

答案 1 :(得分:2)

这里有一个answer to another question

您可以使用

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

我安装了xdg-open(Linux),在使用webbrowser.open()时,它为我生成了一条消息 START / usr / lib / firefox / firefox 。 使用上面的方法不显示此消息(仍然使用xdg-open)。

这压低了对stdout的输出。但是,它不会抑制所有设置的输出到stderr。我的终端仍然有错误消息。