Python原始输入不';使用子流程模块后无法工作

Python原始输入不';使用子流程模块后无法工作,python,python-2.7,subprocess,plink,Python,Python 2.7,Subprocess,Plink,我正在使用子流程模块调用plink并在远程服务器上运行一些命令。这可以按预期工作,但在成功调用子流程后。检查\u调用或子流程。检查\u输出原始输入方法似乎永远阻塞,并且不接受命令行中的输入 我把它简化为一个简单的例子: import subprocess def execute(command): return subprocess.check_call('plink.exe -ssh ' + USER + '@' + HOST + ' -pw ' + PASSWD + ' ' + c

我正在使用子流程模块调用plink并在远程服务器上运行一些命令。这可以按预期工作,但在成功调用
子流程后。检查\u调用
子流程。检查\u输出
原始输入方法似乎永远阻塞,并且不接受命令行中的输入

我把它简化为一个简单的例子:

import subprocess

def execute(command):
    return subprocess.check_call('plink.exe -ssh ' + USER + '@' + HOST + ' -pw ' + PASSWD + ' ' + command)

input = raw_input('Enter some text: ')
print('You entered: ' + input)

execute('echo "Hello, World"')

# I see the following prompt, but it's not accepting input
input = raw_input('Enter some more text: ')
print('You entered: ' + input)
我在
子流程中看到了相同的结果。检查调用
子流程。检查输出
。如果我用stdin的直接读取(
sys.stdin.read(10)
)替换最后的
raw\u输入
调用,则程序不会接受输入

这是Windows7x64上的Python 2.7。你知道我做错了什么吗?”

编辑:如果我更改
execute
以调用除plink之外的其他东西,它似乎可以正常工作

def execute(command):
    return subprocess.check_call('cmd.exe /C ' + command)

这表明,普林克可能是问题所在。但是,我可以在控制台窗口中直接运行多个plink命令而不会出现问题。

我可以通过将stdin连接到devnull来解决这个问题:

def execute(command):
    return subprocess.check_call('plink.exe -ssh ' + USER + '@' + HOST + ' -pw ' + PASSWD + ' ' + command, stdin=open(os.devnull))

我周围没有Windows计算机来测试此功能,因此无法在此处复制它,但您是否尝试将
close\u fds=True
传递到
子进程。检查调用功能?只是尝试了一下,得到了相同的结果。我无法在我的Windows计算机上复制此功能。如果运行plink以外的程序,是否会发生这种情况?我想知道plink是否以某种奇怪的方式干扰了终端,最终破坏了
原始输入。
。好主意。我试过了,它似乎确实能正常工作。不知道普林克在做什么。