如何编写python代码来访问用C编写的程序的输入和输出?

时间:2013-01-14 20:58:26

标签: python c windows shell interfacing

有一个用C编写和编译的程序,从Unix shell输入典型数据;另一方面,我正在使用Windows。

我需要从我用Python编写的代码的输出中向此程序发送输入。

这样做的最佳方法是什么?我读过pexpect,但不确定如何实现它;任何人都可以解释这个问题的最佳方法吗?

2 个答案:

答案 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,然后开始阅读文档已经掌握了你究竟需要做什么。