是否可以隐藏 getpass() 警告?
Is it possible to hide the getpass() warning?
如果 getpass() 无法隐藏消息,是否可以隐藏显示的消息?
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
是否可以用其他对用户更友好的内容替换此消息?如果是,如何?
据我所知,此消息不可自定义。这是一个解决方法。
在幕后,getpass.getpass
是echo无法关闭时的以下函数。
def fallback_getpass(prompt='Password: ', stream=None):
warnings.warn("Can not control echo on the terminal.", GetPassWarning,
stacklevel=2)
if not stream:
stream = sys.stderr
print("Warning: Password input may be echoed.", file=stream)
return _raw_input(prompt, stream)
如果您想自定义消息,您可以编写自己的调用 getpass._raw_input
的函数。例如,
import sys
import getpass
def custom_getpass(prompt='Password: ', stream=None):
if not stream:
stream = sys.stderr
print("This is a custom message to the user.", file=stream)
return getpass._raw_input(prompt, stream)
然后您可以直接调用您的 custom_getpass
函数,或者您可以将 getpass.getpass
替换为您的自定义函数。
getpass.getpass = custom_getpass
# This prints "This is a custom message to the user." before getting the
# password.
getpass.getpass()
请注意,上述方法将始终 打印自定义警告并始终将密码回显给用户。如果您只想在使用回退 getpass
时使用自定义函数,您可以通过简单地检查 getpass
正在使用哪个函数来实现 getpass.getpass
。例如
if getpass.getpass == getpass.fallback_getpass:
getpass.getpass = custom_getpass
# If echo could not be disabled, then this prints "This is a custom
# message to the user." before getting the password.
getpass.getpass()
请注意,在 Python 的未来版本中,这可能会中断,恕不另行通知,因为解决方法依赖于模块的“私有”功能。
如果 getpass() 无法隐藏消息,是否可以隐藏显示的消息?
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
是否可以用其他对用户更友好的内容替换此消息?如果是,如何?
据我所知,此消息不可自定义。这是一个解决方法。
在幕后,getpass.getpass
是echo无法关闭时的以下函数。
def fallback_getpass(prompt='Password: ', stream=None):
warnings.warn("Can not control echo on the terminal.", GetPassWarning,
stacklevel=2)
if not stream:
stream = sys.stderr
print("Warning: Password input may be echoed.", file=stream)
return _raw_input(prompt, stream)
如果您想自定义消息,您可以编写自己的调用 getpass._raw_input
的函数。例如,
import sys
import getpass
def custom_getpass(prompt='Password: ', stream=None):
if not stream:
stream = sys.stderr
print("This is a custom message to the user.", file=stream)
return getpass._raw_input(prompt, stream)
然后您可以直接调用您的 custom_getpass
函数,或者您可以将 getpass.getpass
替换为您的自定义函数。
getpass.getpass = custom_getpass
# This prints "This is a custom message to the user." before getting the
# password.
getpass.getpass()
请注意,上述方法将始终 打印自定义警告并始终将密码回显给用户。如果您只想在使用回退 getpass
时使用自定义函数,您可以通过简单地检查 getpass
正在使用哪个函数来实现 getpass.getpass
。例如
if getpass.getpass == getpass.fallback_getpass:
getpass.getpass = custom_getpass
# If echo could not be disabled, then this prints "This is a custom
# message to the user." before getting the password.
getpass.getpass()
请注意,在 Python 的未来版本中,这可能会中断,恕不另行通知,因为解决方法依赖于模块的“私有”功能。