有一个用 C 编写和编译的程序,典型的数据输入来自 Unix shell;另一方面,我使用的是 Windows。
我需要从我自己用 Python 编写的代码的输出中向该程序发送输入。
这样做的最佳方法是什么?我已经阅读过pexpect
,但不确定如何实现它;谁能解释解决这个问题的最佳方法?
有一个用 C 编写和编译的程序,典型的数据输入来自 Unix shell;另一方面,我使用的是 Windows。
我需要从我自己用 Python 编写的代码的输出中向该程序发送输入。
这样做的最佳方法是什么?我已经阅读过pexpect
,但不确定如何实现它;谁能解释解决这个问题的最佳方法?
我建议你使用 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()
如果您不需要处理对交互式问题和提示的响应,请不要打扰pexpect
,只需使用subprocess.communicate
Adrien Plisson 建议的。
但是,如果您确实需要pexpect
,最好的入门方法是查看其主页上的示例,然后在您掌握了您需要做什么之后开始阅读文档。