繁体   English   中英

对系统程序的Python调用不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM