在我的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)错误。
答案 0 :(得分:12)
正如S.Lott在评论中暗示的那样,你应该先做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)。这是相当低级的编程,但由于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。我的终端仍然有错误消息。