python - 如何禁用 python 中的 webbrowser 消息?

标签 python browser

在我的 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.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 模块没有给你“钩子(Hook)”来控制浏览器打开的方式,它几乎是(或多或少)确保抑制该消息的唯一选择。

关于python - 如何禁用 python 中的 webbrowser 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323080/

相关文章:

python - 导出MySql时如何删除索引和触发器?

javascript - 仅在网络应用程序上强制使用一个选项卡(例如类似于 WhatsApp 和 Google Messenger)

写入文件时 Python CGI 脚本权限被拒绝

python - 在 python 中没有线程的定时器?

javascript - 在浏览器布局中为响应式图像保留空间(防止回流)

javascript - 使用 Javascript 将类添加到元素

SVN错误: ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay ) ) )?

java - 当脚本显示在 HTML 文本区域中时,是否可能发生 XSS 攻击?

python - 测试准确率较低但 AUC 分数较高的可能原因

python - 格式化 PyYAML dump() 输出