4

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

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

这样做的最佳方法是什么?我已经阅读过pexpect,但不确定如何实现它;谁能解释解决这个问题的最佳方法?

4

2 回答 2

6

我建议你使用 pythonsubprocess模块。

它是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()
于 2013-01-14T21:01:58.423 回答
3

如果您不需要处理对交互式问题和提示的响应,请不要打扰pexpect,只需使用subprocess.communicateAdrien Plisson 建议的。

但是,如果您确实需要pexpect,最好的入门方法是查看其主页上的示例,然后在您掌握了您需要做什么之后开始阅读文档。

于 2013-01-14T21:06:31.817 回答