如何使用Popen进行交互式命令? nslookup,ftp

时间:2017-10-31 20:36:43

标签: python python-2.7 subprocess popen

有没有办法让Popen使用交互式命令?我的意思是nslookup,ftp,powershell ......我多次阅读整个子流程文档,但我找不到方法。

我所拥有的(删除项目中不感兴趣的部分)是:

from subprocess import call, PIPE, Popen

command = raw_input('>>> ')
command = command.split(' ')

process = Popen(command, stdout=PIPE, stderr=PIPE, shell=True)

execution = process.stdout.read()
error = process.stderr.read()

output = execution + error

process.stderr.close()
process.stdout.close()

print(output)

基本上,当我尝试使用dir之类的命令打印输出时,输出是一个字符串,因此我可以使用.read()。但是当我尝试使用nslookup时,输出不是字符串,因此无法读取,并且脚本进入死锁状态。

我知道我可以在非交互模式下调用nslookup,但这不是重点。我希望消除所有死锁的可能性,并使其适用于您可以在正常cmd中运行的每个命令。

项目工作的真正方式是通过套接字,因此raw_inputs.recv()并且输出正在发回输出,但我已将其简化为专注于问题。

0 个答案:

没有答案