Subprocess.Popen stdout / stderr没有捕获stdout / stderr

时间:2019-12-30 21:12:36

标签: python subprocess

我正在关注许多其他这样的答案:

我发现subprocess.Popen并未捕获标准输出,而是仍处于交互式会话中。

也就是说,当我连接以下内容时:

import subprocess

user = 'myuser'
host = 'myhost'
cmd = ['ssh', '-t', f'{user}@{hostname}']
chk = subprocess.Popen(cmd,
                       stdout = subprocess.PIPE, 
                       stderr = subprocess.PIPE
                       )

此内容立即被拦截,我的终端希望进行以下操作:

The authenticity of host "" can't be established.
ECDSA key fingerprint is #####################################
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

这发生在我什至无法打电话之前:

out,err = chk.communicate()

这正是我希望将其重定向为subprocess.PIPE的字符串的一部分,而不是等待键盘输入。如何才能将此消息捕获为字符串,而不是被迫与之交互?

0 个答案:

没有答案