如何制作一个可以多次运行程序的python循环?

时间:2019-06-26 13:06:24

标签: python python-3.7

我有一个可以在终端上使用的程序,但是我想在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查看调用)

它实际上似乎在以某种方式工作,但是我不知道如何添加选项。

1 个答案:

答案 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)