我目前正在开发一个Python程序,它涉及使用用户名和密码登录。我正在使用Warning (from warnings module):
File "C:\Python27\lib\getpass.py", line 92
return fallback_getpass(prompt, stream)
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
模块来完成此任务。我的问题是,在getpass无法控制回声的情况下,它会在继续执行程序之前将以下内容喷入终端。
import getpass
try:
getpass.getpass("Password: ")
except getpass.GetPassWarning:
print "Oh no!"
我想要做的是抓住警告并打印我自己的自定义消息。我能想到的唯一代码是以下内容,它可以防止显示回溯,但根本不打印自定义消息。
Warning: Password input may be echoed.
Password:
输出:
Warning: Password input may be echoed.
我想用理想的信息替换文本$(document).ready(function(){
$('.myid').hide()
});
。
答案 0 :(得分:0)
getpass
使用python内置模块warnings
来显示此警告消息。您可以使用各种方法(Python Docs / PyMOTW)过滤/忽略它们。
你可以像这样发出警告:
import getpass
import warnings
# the context manager resets the original
# filterwarnings after it has exited
with warnings.catch_warnings():
# this will raise warnings of type (or inherited of type)
# 'getpass.GetPassWarning' in the module 'getpass'
warnings.filterwarnings(
'error',
category=getpass.GetPassWarning,
module='getpass'
)
try:
password = getpass.getpass('Password: ')
except getpass.GetPassWarning:
print 'Cannot get password on insecure platform'
答案 1 :(得分:0)
@ PM2Ring建议的方法似乎是我迄今为止发现的最佳解决方案。为了别人路过并为了回答这个问题,我将把这一切都包括在这篇文章中。
以下方法覆盖fallback_getpass
模块中的getpass
函数,允许人们准确控制在需要回退时发生的情况。 有点非常hacky但它完成了工作。
import getpass
def custom_fallback(prompt="Password: ",stream=None): #Clone of parameters from getpass.fallback_getpass
print "Custom message." #Custom message goes here
return getpass._raw_input(prompt) #Use getpass' custom raw_input function for security
getpass.fallback_getpass = custom_fallback #Replace the getpass.fallback_getpass function with our equivalent
password = getpass.getpass("Password: ") #Prompt for password
输出:
Custom message.
Password: