В настоящее время я работаю над программой Python, которая включает вход в систему с именем пользователя и паролем. Для этого я использую модуль getpass
. Моя проблема в том, что в случае, если getpass не может контролировать эхо, он выдает следующее в терминал, прежде чем продолжить работу с программой.
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.
Что я хотел бы сделать, так это поймать предупреждение и вместо этого напечатать свое собственное сообщение. Единственный код, который я могу придумать, это следующий, который предотвращает отображение трассировки, но вообще не печатает пользовательское сообщение.
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.
своим собственным сообщением.
warnings
. . FWIW, вот исходный код Python дляgetpass
. - person PM 2Ring   schedule 15.02.2016warnings
). Я думаю, вы могли бы заменить импортированныйgetpass.fallback_getpass
своей собственной функцией, хотя такое исправление стандартных функций модуля действительно должно выполняться только в крайнем случае, ИМХО. - person PM 2Ring   schedule 15.02.2016