【问题标题】:How to make a python loop that would run a program many times?如何制作一个可以多次运行程序的python循环?
【发布时间】:2019-06-26 13:06:24
【问题描述】:

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

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

【问题讨论】:

  • 你通常从终端运行的东西似乎与你试图从 Python 运行的东西不同。在终端上,您没有调用g++
  • 您谈论的是一个 C 程序,但是您的代码正在调用 g++,而您似乎要编译的文件扩展名是 .g,这不是 C 的标准扩展名 根据手册,C++ 和 GNU g++(也不是 Apple clang++,大概是你正在使用的)没有处理它。
  • 啊好吧!确实我需要阅读更多关于此的内容,我会在我仍然遇到问题时添加评论,谢谢!
  • 对不起,我还是迷路了,我没有得到的是我有可执行文件,所以我不需要编译任何东西,只需运行它吗?

标签: python python-3.7


【解决方案1】:

您需要添加 -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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2021-03-23
    • 2015-05-31
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多