[英]Python call to system program not working
我写了一些python脚本,打算自动化gcc的非默认选项(在Kubuntu 14.04上); python现在运行没有错误,并且插入调试打印语句(或将系统命令更改为“ echo”)验证是否传递了正确的信息,但是我从gcc收到一条错误消息
$ python gccm prog16
gcc: fatal error: no input files
compilation terminated.
这是我写的脚本:
#!/usr/bin/python
from sys import argv #get incoming argument
import subprocess #function to call an OS program
script, target = argv
# massage received argument into form needed for math.h linkage
target = "-o " + target + " " + target + ".c -lm"
subprocess.call (['gcc', target], shell=False)`
如果可以使gcc正常工作,我还会对gcc调用进行其他补充(编译版本选项,更严格的代码检查等)。 根据错误消息,它似乎正在正确调用gcc,但是未找到目标源文件。 不能在我调用它的目录中运行它吗? 如果是这样,如何使它从正确的目录(保存我的C源代码文件)中运行; 如果没有,还有什么可能导致这种情况?
如果使用shell=False
,则不应将子流程的参数连接在一起。 相反,它们应该在args
列表中分别是自己的元素:
subprocess.call(['gcc', '-o', target, target+'.c', '-lm'], shell=False)
与此相关的是,您为什么自己写这样的东西? 如果您要使用基于Python的构建系统,请查看SCons 。
如果您具有shell=False
,那么必须将每个参数分别传递到subprocess.call
。
尝试以下方法:
subprocess.call (['gcc', '-o', target, target + '.c', '-lm'], shell=False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.