python调用可执行文件的方法
2017-04-10 13:18
1256 查看
最近要用到python调用C程序,因此,看了一下python调用别的程序的方法。大致来说,python调用C/C++有两种方式,一种是调用C编译的动态链接库,即so文件,一种是调用C生成的可执行文件。具体用哪种根据应用场景来定。
python调用可执行文件,事实上是在python中执行原本在命令行中执行的命令。
具体方法:
(1). 写c++程序,并带有主程序main.c
将程序保存起来,并用gcc编译成可执行文件calledByPy。
(2).python调用程序
(此程序来自http://www.cnblogs.com/apexchu/p/5015961.html)
执行后的结果为:
rc = 0,
out = 30
**********
['30\n']
**********
30
0
python程序里写了3种调用可执行文件的方法。commands、popen以及os.system。上从上面的输出结果可以看到:
commands.getstatusoutput()会保存可执行程序中的打印值和主函数的返回值,但不会把执行命令过程中的输出内容,要再写打印语句才能打印;
popen将可执行程序中的所有的打印内容输出成文件,也不会打印执行过程中要输出的内容,通过读文件可以输出所有打印内容,且os.popen不会保存主函数的返回 结果;
os.system()会保存打印值和主函数的返回结果,且会将执行过程中要打印的内容打印出来。
上面提到,这三种方式,实际上都是在python中执行命令,因此,他们不只是用来执行可执行文件,也可以用来执行linux系统的别的指令。
例如
0
calledByPy
calledByPy.c
makefile
pycallCpp.py
**********
['calledByPy\n', 'calledByPy.c\n', 'makefile\n', 'pycallCpp.py\n']
**********
calledByPy
calledByPy.c
makefile
pycallCpp.py
0
python调用可执行文件,事实上是在python中执行原本在命令行中执行的命令。
具体方法:
(1). 写c++程序,并带有主程序main.c
#include <stdio.h> #include <stdlib.h> int main(){ int a = 10; int b = 3; int c = a * b; printf("%d\n", c); return 0; }
将程序保存起来,并用gcc编译成可执行文件calledByPy。
(2).python调用程序
(此程序来自http://www.cnblogs.com/apexchu/p/5015961.html)
import commands import os main = "./calledByPy" if os.path.exists(main): rc, out = commands.getstatusoutput(main) print 'rc = %d, \nout = %s' % (rc, out) print '*'*10 f = os.popen(main) data = f.readlines() f.close() print data print '*'*10 r_v = os.system(main) print r_v
执行后的结果为:
rc = 0,
out = 30
**********
['30\n']
**********
30
0
python程序里写了3种调用可执行文件的方法。commands、popen以及os.system。上从上面的输出结果可以看到:
commands.getstatusoutput()会保存可执行程序中的打印值和主函数的返回值,但不会把执行命令过程中的输出内容,要再写打印语句才能打印;
popen将可执行程序中的所有的打印内容输出成文件,也不会打印执行过程中要输出的内容,通过读文件可以输出所有打印内容,且os.popen不会保存主函数的返回 结果;
os.system()会保存打印值和主函数的返回结果,且会将执行过程中要打印的内容打印出来。
上面提到,这三种方式,实际上都是在python中执行命令,因此,他们不只是用来执行可执行文件,也可以用来执行linux系统的别的指令。
例如
import commands import os main = "ls" rc, out = commands.getstatusoutput(main) print rc print out print '*' * 10 f = os.popen(main) data = f.readlines() f.close() print data print '*' * 10 r_v = os.system(main) print r_v输出结果为:
0
calledByPy
calledByPy.c
makefile
pycallCpp.py
**********
['calledByPy\n', 'calledByPy.c\n', 'makefile\n', 'pycallCpp.py\n']
**********
calledByPy
calledByPy.c
makefile
pycallCpp.py
0
相关文章推荐
- Java实现调用jython执行python文件的方法
- windows下C++调用shell启动和关闭可执行文件exe的最简单方法
- python文件调用另一个python class文件中的方法
- Python 3.4 .py文件打包成exe可执行文件方法
- Python脚本文件打包成可执行文件的方法
- python for line in sys.stdin解析文件调用方法
- java调用js文件并执行方法示例
- Android调用本机程序执行文件的方法
- python文件中的__name__=='__main__'的使用及调用其他py文件中的函数方法
- C++ 中调用执行Python文件
- java 执行命令、调用bat文件、调用外部程序的两种方法
- Makefile文件中调用python文件及perl文件的方法
- python制作exe可执行文件的方法---使用pyinstaller
- sys.argv使用方法及shell读文本并执行python文件
- Apache POI API操作Microsoft Office格式文件的方法+JAVA调用exe可执行文件
- 在python中调用dll,并将dll以及python合并打包成一个exe文件的方法
- smarty模板文件中执行php代码 调用php函数的方法 使用对象等
- python文件读写操作与linux shell变量命令交互执行的方法
- Python 调用Matlab的函数或者调用M文件方法
- C++程序中调用其他exe可执行文件方法