如何在Python3中读取标准输出

如何在Python3中读取标准输出,python,python-3.x,Python,Python 3.x,我有一个命令行工具,当被调用时,它会要求用户输入两次密码,如下所示: C:\>passwd.exe username Please enter your password: 123456 Please repeat your password: 123456 DONE C:\> 我想写一个Python脚本来说明这一点。当前我的脚本看起来像: from subprocess import Popen, STDOUT, PIPE p = Popen("passwd.exe userna

我有一个命令行工具,当被调用时,它会要求用户输入两次密码,如下所示:

C:\>passwd.exe username
Please enter your password: 123456
Please repeat your password: 123456
DONE
C:\>
我想写一个Python脚本来说明这一点。当前我的脚本看起来像:

from subprocess import Popen, STDOUT, PIPE
p = Popen("passwd.exe username", stdin=PIPE, stdout=PIPE, stderr=PIPE)
print(p.stdout.readline())

我希望打印类似于
请输入密码:
的内容,但过程“挂起”。我做错了什么?

您的
passwd.exe
很可能使用
stderr
作为其输出,而不是密码程序可能会发生许多奇怪的事情。它们可以从stdin读取数据,也可以直接从控制台(类似Unix上的tty)读取数据,还可以写入stdout、stderr,或者在这里直接写入控制台。由于它们不打算与重定向io一起使用,因此默认值通常是控制台。请检查