我的Python脚本调用一个可执行文件(C++编译的二进制文件):
subprocess.call(["./rti", '1', '0.05', fileForRTI])
其中rti
可执行文件名、1
、0.05
和fileForRTI
是参数。你知道吗
这个可执行文件生成到控制台的输出,但我也希望将其输出到文本文件。我尝试的是(根据this):
import sys
someFile = 'testFile'
sys.stdout = open(someFile, "w")
print(str(subprocess.call(["./rti", '1', '0.05', fileForRTI])))
但由于某些原因,写入文件的内容只有“1”,而输出要大得多。你知道吗
我也试过这个:
p = Popen(['./rti', '1', '0.05', fileForRTI], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
rc = p.returncode
print(rc)
但这又是第1集。你知道吗
编辑:Kasra的解决方案也给出了输出1,而不是我通常在屏幕上看到的。你知道吗
不确定是否允许,但一个附带的问题是,如果./rti
可执行文件需要很长时间才能生成代码,那么是否可以停止、终止并输出到屏幕上已经看到的文件。你知道吗
您可以使用
subprocess.check_output()
:它运行指定的命令并以字节字符串的形式返回其输出。如果你需要的话 将结果字节解释为文本,添加进一步的解码步骤。例如:
check_output()
函数是执行外部命令和 获取其输出。但是,如果您需要与子流程执行更高级的通信,例如向其发送输入,则需要采用不同的方法。为此,直接使用subprocess.Popen
类相关问题 更多 >
编程相关推荐