我有一个可以在终端上使用的程序,但是我想在python循环中多次运行它。有人告诉我使用subprocess.call函数,但我在理解其工作原理时遇到了一些麻烦。
我通常在终端上完全运行./grezza_foresta -w "/Users/stordd/Desktop/StageI2M/Leiden/text_file/USA.g" -m 5 -e 0 > file_name.g
(-w -m -e是选项,而>是使用输出创建文件)
因此,我被告知要尝试做类似的事情。
import subprocess
subprocess.call(["g++", "/Users/stordd/Desktop/StageI2M/C/forestenostre/grezza_foresta", "/Users/stordd/Desktop/StageI2M/Leiden/text_file/USA.g"])
ntrial = input("How many trials? ")
for i in range(int(ntrial)):
tmp=subprocess.call("/Users/stordd/Desktop/StageI2M/C/forestenostre/grezza_foresta")
print(i,tmp)
我遇到此错误:
ld:无法与架构x86_64的主可执行文件'/ Users / stordd / Desktop / StageI2M / C / forestenostre / grezza_foresta'链接 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
它实际上似乎在以某种方式工作,但是我不知道如何添加选项。
答案 0 :(得分:0)
您需要添加-o
标志并更改C ++文件后缀:
import subprocess
subprocess.call(["g++", "-o", "/Users/stordd/Desktop/StageI2M/C/forestenostre/grezza_foresta", "/Users/stordd/Desktop/StageI2M/Leiden/text_file/USA.cpp"])
ntrial = input("How many trials? ")
for i in range(int(ntrial)):
tmp=subprocess.call("/Users/stordd/Desktop/StageI2M/C/forestenostre/grezza_foresta")
print(i,tmp)