当前位置:首页 » 编程语言 » c执行python

c执行python

发布时间: 2022-12-13 18:49:25

python中执行系统命令常见的几种方法

作为胶水语言,Python可以很方便地执行系统命令,从而帮助我们快速的完成任务;而且Python执行系统命令可采用的方法有很多,本文重点介绍一下:os.system()、os.popen()和subprocess模块。
1. os.system()
这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。
>>> import os
>>> output = os.system('cat /proc/cpuinfo')
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>> output # doesn't capture output
0
2. os.popen()
这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。
>>> output = os.popen('cat /proc/cpuinfo')
>>> output
>>> print output.read()
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>>
3. subprocess模块
该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*等方法的一个模块。
>>> import subprocess
>>> subprocess.Popen(["ls", "-l"]) # python2.x doesn't capture
output
>>> subprocess.run(["ls", "-l"]) # python3.x doesn't capture
output
>>> total 68
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads
... ...
>>>

Ⅱ 如何实现 C/C++ 与 Python 的通信

属于混合编程的问题。较全面的介绍一下,不仅限于题主提出的问题。

以下讨论中,Python指它的标准实现,即CPython(虽然不是很严格)

本文分4个部分

C/C++ 调用 Python (基础篇)— 仅讨论Python官方提供的实现方式
Python 调用 C/C++ (基础篇)— 仅讨论Python官方提供的实现方式
C/C++ 调用 Python (高级篇)— 使用 Cython
Python 调用 C/C++ (高级篇)— 使用 SWIG

练习本文中的例子,需要搭建Python扩展开发环境。具体细节见搭建Python扩展开发环境 - 蛇之魅惑 - 知乎专栏

1 C/C++ 调用 Python(基础篇)
Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。

Ⅲ 为什么c语言运行比python快

众所周知,python执行速度比c慢。原因为何?
python的传统运行执行模式:录入的源代码转换为字节码,之后字节码在python虚拟机中运行。代码自动被编译,之后再解释成机器码在CPU中执行。
c编译器直接把c源代码编译成机器码。过程比python执行过程少了字节码生成和虚拟机执行字节码过程。所以自然比python快。
Python运行执行过程如下图:
补充说明:
1.字节码不同于机器码,是特定于python的一种表现形式。
2.PVM是Python Virtual Machine的简写,即python虚拟机。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于为什么c语言运行比python快的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

Ⅳ python与c语言的关系

1、语言类型不同
Python是一种动态类型语言,又是强类型语言;C语言是静态类型语言,在编译期间就确定数据类型的语言;
2、内存管理不同
Python使用自动垃圾收集器进行内存管理;C语言中程序员必须自己进行内存管理;
3、对象机制不同
Python所有的数据,都是由对象或者对象之间的关系表示的,函数是对象,字符串是对象,每个东西都是对象的概念;C语言中没有对象这个概念,只有数据的表示。
4、运行效率不同
Python有一个GIL锁,导致其对多线程支持不够好,运行速度比较慢;C语言比较快,是很好的底层语言,运行效率上优于Python。
5、变量类型不同
Python有六个标准的数据类型,包含Number数字、String字符串、List列表、Tuple元祖、Sets集合、Dictionary字典;数字类型有四种,包含:整数、布尔型、浮点数和复数。C语言也分为四大类,其中包含基本类型、枚举类型、void的类型、派生类型,基本类型包含整数类型、浮点类型。
6、函数库的使用方法不同
C语言中使用库函数,需要引入头文件用include引入;Python中需要引入别的模块或者函数时需要用import引入。

Ⅳ c语言和python区别

具体区别有三方面:

一、语言不同。

其中C++语言属于编译型语言,程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件。

Python语言是解释型语言,该语言编写的程序不需进行预先编译,以文本方式储存代码,会将代码一句一句直接运行。

二、时间点不同。

两者区别在于翻译时间点不同。C++在前,而Python在后。

三、兼容性不同。

Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。

Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。

原理方面:

1、运行效率:C++ >> Python。

Python代码和C++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,Python最终转换出来的CPU指令会比C++ 多很多。

首先,Python东西比C++多,经过了更多层,Python中甚至连数字都是object。

其次,Python是解释执行的,和物理机CPU之间多了解释器这层,而C++是编译执行的,直接就是机器码,编译的时候编译器又可以进行一些优化。

2、开发效率:Python >> C++。

Python一两句代码就搞定的东西,C++往往要写一大堆。用C++解析下Json你就明白了,很可能好几天过去了,你还在调bug,刚调好bug又内存泄漏了。

Ⅵ C语言程序如何调用python程序

下面是一个例子:
首先是python的一个简单函数
class Hello:
def __init__(self, x):
self.a = x
def print(self, x=None):
print(x)
def xprint():
print("hello world")
if __name__ == "__main__":
xprint()
h = Hello(5)
h.print()1

下面是C语言
#include <python3.4m/Python.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
Py_Initialize();
// 将当前目录加入sys.path
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
// 导入hello.py模块
PyObject *pmole = PyImport_ImportMole("hello");
// 获得函数xprint对象,并调用,输出“hello world\n”
PyObject *pfunc = PyObject_GetAttrString(pmole, "xprint");
PyObject_CallFunction(pfunc, NULL);
// 获得类Hello并生成实例pinstance,并调用print成员函数,输出“5 6\n”
PyObject *pclass = PyObject_GetAttrString(pmole, "Hello");
PyObject *arg = Py_BuildValue("(i)", 5);
PyObject *pinstance = PyObject_Call(pclass, arg, NULL);
PyObject_CallMethod(pinstance, "print", "i", 6);
Py_Finalize();
return 0;
}
编译命令如下:
gcc pyapi.c -lpython3.4m -o pyapi

Ⅶ 运行python程序的两种方式

运行python程序的两种方式是什么?python有两种运行方式:交互式和脚本式。交互式可以通过cmd命令行窗口或者IDEL实现,而脚本式通过写一个脚本(.py结尾的文档)实现。其中交互式主要用于简单的python运行或者测试调试python时用到,而脚本式是运行python程序的主要方法。

第一,交互式,通过Windows命令行工具进行交互式运行python。同时按下Windows键和R键,启动“运行”,在“运行”中输入cmd然后回车,即弹出命令行工具,然后输入python回车,即出现如下界面。

第二,然后输入print('Helloworld!'),既可以敲一行代码,与python交互一次,python执行一次。

第三,通过IDEL交互式运行python。从“开始”中找到Python->IDEL,如下图。

第四,启动IDEL后,同样输入print('Helloworld!'),既可以敲一行代码,与python交互一次,python执行一次。只不过IEDL中python代码可以高亮显示。

第五,脚本式运行python,在IDEL中点击file->newfile,就会弹出一个未命名(Untitled)的脚本窗口,然后输入如下代码,并按Ctrl+S保存。

#20181216摄氏温度和华氏温度之间转换

t=input('请输入带有单位符号的温度(例如37C或者100F):')

ift[-1]in('f','F'):

C=(eval(t[:-1])-32)/1.8 #如果输入为华氏温度,那么转换为摄氏温度

print('转变为摄氏温度%.2fC为:'%C)

elift[-1]in('c','C'):

F=eval(t[:-1])*1.8+32 #如果输入为摄氏温度,那么转换为华氏温度

print('转变为华氏温度%.2fF为:'%F)

else:

print('输入格式有误,请输入带有单位符号的温度(例如37C或者100F):')

第六,按F5运行上一步保存的***.py脚本,就会出现如下界面,提示:请输入带有单位符号的温度(例如37C或者100F),随便输入一下就行,即通过脚本运行了python。

那么,有关运行python程序的两种方式的内容,小编就介绍到这里了。小伙伴们可以用心了解一下哦!

本篇文章使用以下硬件型号:联想小新Air15;系统版本:win10;软件版本:python3.0。

Ⅷ C语言和python语言有很多相似吗

一、语言类型不同C语言是比较古老的语言,并没有太多高级语言的特性,在语言类型上他属于编译型语言,何为编译型语言,编译型语言就是经过了软件的编译后,生成机器码,然后再由计算机操作系统去运行,他的优点就是执行速度很快,因为他是最接近计算机底层的语言,和计算机交互的时候,效率是很高的,他的缺点就是由于依赖底层的操作系统,所以并不能跨平台,无法做到一处代码,处处编译,他一般用于操作系统或者是驱动等底层的开发,是大学计算机的必修课。而Python或者Java这种属于高级语言,Java是属于解释型语言,但是Python好像介于两者之间,界限并不是划分的特别明显,但是他总体来说属于解释型语言,因为他有一个虚拟机,这个虚拟机就导致了Python可以跨平台,无论是哪个操作系统,只要你在有虚拟机的操作系统就可以运行Python代码,所以Python跟适合做软件的开发。二、数据类型的不同<img src="https://pic1.mg.com/50/v2-_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="554" data-rawheight="348" data-default-watermark-src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="554" data-original="https://picx.mg.com/v2-_r.jpg?source=1940ef5c"/>我们用一张图概括了C语言的数据类类型、构造类型、指针类型、空类型,C语言在定义变量的时候一定要先声明变量的类型,告诉计算机,我是一个什么类型,然后计算机就会在内存中开辟对应的内存空间,我们以整型为例,计算机会在内存中开辟4个字节的空间,这个空间主要用于初始化,由于在一开始我们就制定了长度,所以我们在运算的时候需要格外小心,需要考虑到内存是否够用等溢出问题。<img src="https://pic1.mg.com/50/v2-_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="553" data-rawheight="243" data-default-watermark-src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="553" data-original="https://picx.mg.com/v2-_r.jpg?source=1940ef5c"/>我们再来看看Python的数据类型,可以发现大体上没有太大的区别,,Python封装了一些高级的数据类型,比如元组、字典等,Python对比C语言最大的优势在于定义变量的时候不需要事先声明变量的类型,比如我们定义一个整型变量age=18,首先计算机会是在内存中开辟一块内存来存储18,然后将age指向18,变量age是没有类型之分的,这样做的就比较友好了,我们不需要考虑变量的类型,也就无需考虑在运算过程中是否会溢出的问题。三、便利性的不同Python语言之所能够火出圈,最大的原因还是因为他简单,Python语言简便的语法和丰富的类库让很多零基础的小白感受到了开发的魔力,Python有很多很强大的内置函数,我们只需要在需要用到的时候import,这些丰富的类库在Python中称为模块,像OS模块、time模块、random模块等基础模块,我们可以使用一行甚至几行代码就可以实现C语言几百行的效果。而Python这么多模块之间也有弊端,那就是模块之间的引用问题,会出现各种报错,一般管理模块之间的关系我们可以使用pip来便捷管理。反观C语言,他由于出生的时间比较早,没有强大的类库,导致我们很多的时候很多基础类库需要自己写,我们在学习C语言的时候还记得需要引用很长一串头文件,这些原因都是制约C语言发展的原因。不过C语言的这个特性可以让开发者开发出更适合性能更高的一些内置函数。四、编程思维的不同C语言和Python另一个本质的区别就是编程的思维不同,简单来说就是C语言是面向过程的语言,而Python是面向对象的语言。面向过程强调的是我该怎么去做。即功能的执行过程,即先干啥,后干啥。在面向过程中,我们会写很多的函数,每一个函数负责完成某一个功能,而向过程的设计思想存在以下几个缺陷:系统软件适应性差,可拓展性差,维护性低。<img src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="283" data-rawheight="104" data-default-watermark-src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" class="content_image" width="283"/>面向对象的一种思维方式是对面向过程的一种改进,作为新式的编程思想,是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来做。想吃饭让阿姨做,想写代码雇佣程序员,不需要自己手动去做。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。<img src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="583" data-rawheight="328" data-default-watermark-src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="583" data-original="https://picx.mg.com/v2-_r.jpg?source=1940ef5c"/>面向过程和面向对象各有千秋,面向对象更符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性,他有三大特征:继承、封装、多态。五、其他的不同Python和C还有其他的不同,主要体现在开发的舒适度,在学习Python的时候,我们可以使用Python自带的图形化界面来编程,有点类似Linux的界面,这种界面交互性良好,使用简单的命令就可以进入和退出,进一步降低了学习成本,而C语言的编译器屈指可数,最开始使用的是Dev-C++这种交互性极差,UI极具年代感的产品,接着是微软的Microsoft Visual studio虽然在功能和交互上进行了升级,但是还是感觉有年代感,不如Python那么智能。说到Python就不得不提PyCharm,这种交互性极好UI美观的产品真的是会让人爱上编程,虽然他很吃内存,但是我们也可以使用VsCode这种轻量级的产品。此外,Python通过缩进来表示语句,减少了不必要的代码,提高了可读性和舒适度,让代码看起来更加美观,而C语言是使用{},这些小的语法的区别都彰显了Python语言的高级特性。总结以上说了那么多Python和C的不同,总结来说就是C语言是很基础的语言,就好比我们在小学的时候学习的加减乘除,是为以后学习解一元二次方程、椭圆方程等高级题目做准备的,学C语言也一样,是基础,是我们入门编程的第一课,让我们体会到什么是变量、什么是方法、函数,所以我认为C语言更适合做入门的语言。<img src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="554" data-rawheight="350" data-default-watermark-src="https://picx.mg.com/50/v2-_720w.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="554" data-original="https://picx.mg.com/v2-_r.jpg?source=1940ef5c"/>而Python作为高级语言,吸收了C语言的一些好的地方,同时改进了C语言的不足,取其精华去其糟粕,所以让Python变得更加智能,虽然代码量少了,更简单了,但是程序员不是工具人,是魔术师,我们需要去了解底层才能让我们走的更远更高。

Ⅸ python 调用C可执行程序

比如参数是ARG1,ARG2,输入字符串是TEST

import subprocess as sub
p = sub.Popen(['alignment ARG1 ARG2'], shell = True, stdin = sub.PIPE, stdout = sub.PIPE, stderr = sub.PIPE)
(out,err) = p.communicate(input = 'TEST')

out是执行后的标准输出

“问题补充:那个C可执行程序需要CTRL + C 才能退出,就不知道该怎么办了”

可以发送SIGINT信号给可执行程序
Popen.send_signal(signal)

等同于ctrl + c

Ⅹ 求助 关于c程序中嵌入Python的问题

嵌入
与python的扩展相对,嵌入是把Python解释器包装到C的程序中。这样做可以给大型的,单一的,要求严格的,私有的并且(或者)极其重要的应用程序内嵌Python解释器的能力。一旦内嵌了Python,世界完全不一样了。

C调用python中的函数:
hw.py:

#coding=utf8

def hw_hs(canshu):
return canshu

if __name__ == "__main__":
ccss = "I am hw"
print hw_hs(ccss)

helloWorld.py:

#coding=utf8
import hw

def hello():
ccss = "I am helloWorld"
return hw.hw_hs(ccss)

if __name__ == "__main__":
print hello()

testcpypy.c:

//#include "testcpypy.h"
#include <Python.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
//初始化Python
Py_Initialize();
if (!Py_IsInitialized()) {
printf("Py_Initialize");
getchar();
return -1;
}

//执行python语句
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");

PyObject *pMole = NULL;
PyObject *pFunc = NULL;
PyObject *reslt =NULL;

//载入python模块
if(!(pMole = PyImport_ImportMole("helloWorld"))) {
printf("PyImport_ImportMole");
getchar();
return -1;
}

//查找函数
pFunc = PyObject_GetAttrString(pMole, "hello");
if ( !pFunc || !PyCallable_Check(pFunc) )
{
printf("can't find function [hello]");
getchar();
return -1;
}

//调用python中的函数
reslt = (PyObject*)PyEval_CallObject(pFunc, NULL);
//printf("function return value : %d\r\n", PyInt_AsLong(reslt));

//将python返回的对象转换为C的字符串
char *resltc=NULL;
int res;
res = PyArg_Parse(reslt, "s", &resltc);
if (!res) {
printf("PyArg_Parse");
getchar();
return -1;
}
printf("resltc is %s", resltc);
getchar();

//释放内存
Py_DECREF(reslt);
Py_DECREF(pFunc);
Py_DECREF(pMole);

//关闭python
Py_Finalize();

return 0;
}

编译:
gcc -o testcpypy testcpypy.c -IC:\Python27\include -LC:\Python27\libs -lpython27 ---C:\Python27为python安装目录
或:
gcc -c testcpypy.c -IC:\Python27\include
gcc -o testcpypy.exe testcpypy.o -LC:\Python27\libs -lpython27
执行结果:

带参数的情况:

#include "callpydll.h"
#include "Python.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>

int callhello(char *instr, char *outstr)
{

PyObject *pMole = NULL;
PyObject *pFunc = NULL;
PyObject *reslt = NULL;
PyObject *pParm = NULL;

char *resltc = NULL;
int resltn;
int res;

char *helloWorld = "TestIM_ProtocBuf";

char *im_account = "aaaa";
char *auth_code = "aaaa";
char *im_uid = "aaaa";
char *proxy_topic = "";

//初始化Python
Py_Initialize();
if (!Py_IsInitialized()) {
printf("Py_Initialize");
getchar();
return -1;
}

//执行python语句
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");

//载入python模块
if(!(pMole = PyImport_ImportMole(helloWorld))) {
printf("PyImport_ImportMole");
getchar();
return -2;
}

//查找函数
pFunc = PyObject_GetAttrString(pMole, "login_proxy_body_serialize");
if ( !pFunc || !PyCallable_Check(pFunc) )
{
printf("can't find function [hello]");
getchar();
return -3;
}

//参数转换C --> python, 参数必须是元组(一个参数也是,否则会失败!!!坑啊)
pParm = Py_BuildValue("(ssss)", im_account, auth_code, im_uid, proxy_topic);

//调用python中的函数
reslt = (PyObject*)PyEval_CallObject(pFunc, pParm);

//将python返回的对象转换为C的字符串
res = PyArg_ParseTuple(reslt, "si", &resltc, &resltn);
if (!res) {
printf("PyArg_Parse");
getchar();
return -4;
}

printf("resltn is %d", resltn);
memcpy(outstr, resltc, strlen(resltc)+1);

//释放内存
Py_DECREF(reslt);
Py_DECREF(pFunc);
Py_DECREF(pMole);
Py_DECREF(pParm);

//关闭python
Py_Finalize();

return 0;
}

int main() {
int i;
char *dais = "iammain";
char res[10240];
memset(res,'\0',sizeof(res));

i = callhello(dais, res);
if(0 != i) {
printf("Notify:error");
getchar();
return -1;
}
printf("result is %s", res);
getchar();
return 0;
}

热点内容
如何申请i7服务器地址 发布:2025-01-23 04:42:15 浏览:845
浏览器内核源码 发布:2025-01-23 04:41:34 浏览:659
精英版缤智少了些什么配置 发布:2025-01-23 04:41:30 浏览:356
编写c编译器 发布:2025-01-23 04:41:30 浏览:968
可以解压war包的编译软件 发布:2025-01-23 04:38:28 浏览:986
vivo手机有编译功能吗 发布:2025-01-23 04:31:57 浏览:568
自己架设云手机服务器 发布:2025-01-23 04:31:17 浏览:949
gcc命令行编译的方法 发布:2025-01-23 04:30:31 浏览:397
我的云服务器地址近期价格 发布:2025-01-23 04:29:05 浏览:625
js预览上传图片 发布:2025-01-23 04:28:54 浏览:407