在我的 python 程序中,当我让用户使用 webbrowser 模块创建一个 gmail 帐户时,python 显示:
“请输入您的 Gmail 用户名:在现有浏览器 session 中创建新窗口。”
有什么方法可以消除“在现有浏览器 session 中创建新窗口”,因为它会占用用户在其 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 注册页面而不是实际将他们发送到那里,因为这样做要简单得多并且不会导致(目前无法解决 -由我)错误。
最佳答案
正如 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 模块没有给你“钩子(Hook)”来控制浏览器打开的方式,它几乎是(或多或少)确保抑制该消息的唯一选择。
关于python - 如何禁用 python 中的 webbrowser 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323080/