有一个用C编写和编译的程序,从Unix shell输入典型数据;另一方面,我正在使用Windows。
我需要从我用Python编写的代码的输出中向此程序发送输入。
这样做的最佳方法是什么?我读过pexpect
,但不确定如何实现它;任何人都可以解释这个问题的最佳方法吗?
答案 0 :(得分:6)
我建议你使用python subprocess
模块。
它取代了os.popen()
函数调用,它允许在通过管道与标准输入/输出/错误流交互时执行程序。
使用示例:
import subprocess
process = subprocess.Popen("test.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
input,output = process.stdin,process.stdout
input.write("hello world !")
print(output.read().decode('latin1'))
input.close()
output.close()
status = process.wait()
答案 1 :(得分:3)
如果您不需要处理对交互式问题和提示的回复,请不要打扰pexpect
,只需按照Adrien Plisson的建议使用subprocess.communicate
。
但是,如果你做需要pexpect
,最好的入门方法是浏览主页上的examples,然后开始阅读文档已经掌握了你究竟需要做什么。