如何在python中禁用webbrowser消息?

Eri*_*ikT 13 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: ')
Run Code Online (Sandbox Code Playgroud)

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

编辑2:我已经决定告诉用户转到gmail注册页面而不是实际发送它们,因为这样做更简单,并且导致没有(当前无法解决的)错误.

Ale*_*lli 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)
Run Code Online (Sandbox Code Playgroud)

(对于标准错误而不是标准输出,请使用2而不是1).这是相当低级的编程,但由于webbrowser模块没有为您提供"钩子"来控制浏览器的打开方式,因此它几乎是(或多或少)确保抑制该消息的唯一选择.