我有这个 C 程序,至少我认为是(文件:spa.c、spa.h)。有什么方法可以在不向 Python 解释器传递额外参数的情况下从 Python 执行此脚本(如果没有,参数是什么?)
更新:感谢您的回复。源代码可以在 http://www.nrel.gov/midc/spa/#register 找到。
(请不要被 url 中的“注册”吓到,如果您填写表格,您可以立即下载文件(无验证邮件等)我会尝试您的建议并报告结果。
更新 2:我使用 gcc 编译了源代码,但现在它在尝试调用 () 时给了我一个被拒绝的权限,即使在以 root 身份运行 python 时也是如此(我在 Ubuntu 10:10 上) .
更新 3 [Errno 8] 执行格式错误
更新 4 好的,我让它工作了。程序使用 printf 输出值:
>>> call(['/path'])
Julian Day: 2452930.312847
L: 2.401826e+01 degrees
B: -1.011219e-04 degrees
R: 0.996542 AU
H: 11.105902 degrees
Delta Psi: -3.998404e-03 degrees
Delta Epsilon: 1.666568e-03 degrees
Epsilon: 23.440465 degrees
Zenith: 50.111622 degrees
Azimuth: 194.340241 degrees
Incidence: 25.187000 degrees
Sunrise: 06:12:43 Local Time
Sunset: 17:20:19 Local Time
谢谢大家!
最佳答案
没有C 脚本 这样的东西。如果您的意思是 C 程序,您需要在运行之前将 spa.c
和 spa.h
编译成可执行文件。
如果您在 Linux 或 Mac OS X 中使用 GCC:
$ gcc -Wall spa.c -o spa
将为您提供一个名为 spa
的可执行文件。
之后,您可以使用 Python 脚本运行 spa
程序:
from subprocess import call
call(["./spa", "args", "to", "spa"])
关于python - 在 python 中执行 C 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376397/