【发布时间】: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