【发布时间】:2020-03-17 17:52:45
【问题描述】:
我正在编写一个接受电子邮件和密码进行身份验证的 CLI。
邮件提示使用raw_input(),密码提示使用getpass()进行混淆处理。
此设置在直接输出到控制台时工作正常,但在将输出重定向到日志文件时会失败。
示例代码:
user_email = raw_input('Email: ')
user_password = getpass('Password: ')
没有重定向的示例输出:
$ python script_that_does_stuff.py
Email: me@email.com
Password:
Doing stuff...
带有重定向的示例输出:
$ python script_that_does_stuff.py > stuff.log
因为我知道这里需要用户输入,所以我可以输入电子邮件,按 Enter,然后它会显示:
$ python script_that_does_stuff.py > stuff.log
me@email.com
Password:
输入密码后,照常继续,但日志显示如下:
$ cat stuff.log
Email:Doing stuff...
问题:
如何强制raw_input() 提示在控制台中显示,就像将输出重定向到文件时的getpass() 提示一样?
环境
此脚本位于旧版 Python 2.7 代码库中,主要在 Mac OS 系统上运行,偶尔在 Linux 上运行。
【问题讨论】:
标签: python