【澳门葡京备用网址】Python调用C语言的艺术,程序的结合

Python调用C语言的办法【基于ctypes模块】,pythonctypes

正文实例呈报了Python调用C语言的不二诀窍。分享给大家供大家参谋,具体如下:

Python中的ctypes模块大概是Python调用C方法中最简易的一种。ctypes模块提供了和C语言包容的数据类型和函数来加载dll文件,由此在调用时不需对源文件做任何的修改。也正是如此奠定了这种艺术的轻松性。

示范如下

完成两数求和的C代码,保存为add.c

//sample C file to add 2 numbers - int and floats
#include <stdio.h>
int add_int(int, int);
float add_float(float, float);
int add_int(int num1, int num2){
  return num1 + num2;
}
float add_float(float num1, float num2){
  return num1 + num2;
}

接下去将C文件编写翻译为.so文件(windows下为DLL)。上边操作会生成adder.so文件

#For Linux
$ gcc -shared -Wl,-soname,adder -o adder.so -fPIC add.c
#For Mac
$ gcc -shared -Wl,-install_name,adder.so -o adder.so -fPIC add.c
#For windows
$
gcc -shared -Wl,-soname,adder -o adder.dll -fPIC add.c

今昔在您的Python代码中来调用它

from ctypes import *
#load the shared object file
adder = CDLL('./adder.so')
#Find sum of integers
res_int = adder.add_int(4,5)
print "Sum of 4 and 5 = " + str(res_int)
#Find sum of floats
a = c_float(5.5)
b = c_float(4.1)
add_float = adder.add_float
add_float.restype = c_float
print "Sum of 5.5 and 4.1 = ", str(add_float(a, b))

输出如下

Sum of 4 and 5 = 9
Sum of 5.5 and 4.1 = 9.60000038147

在这么些事例中,C文件是自解释的,它蕴含四个函数,分别达成了整形求和和浮点型求和。

在Python文件中,一同首发轫入ctypes模块,然后采纳CDLL函数来加载大家创造的库文件。那样大家就能够透过变量adder来使用C类库中的函数了。当adder.add_int()被调用时,内部将发起叁个对C函数add_int的调用。ctypes接口允许大家在调用C函数时选择原生Python中暗中认可的字符串型和整型。

而对于另外类似布尔型和浮点型那样的门类,应当要运用科学的ctype类型才得以。如向adder.add_float()函数字传送参时,
大家要先将Python中的十进制值转化为c_float类型,然后才具传递给C函数。这种艺术即使简易,清晰,可是却备受限。举个例子,并无法在C中对目的开展操作。

越多关于Python相关内容感兴趣的读者可查看本站专项论题:《Python进度与线程操作手艺总括》、《Python数据结构与算法教程》、《Python函数使用才具总括》、《Python字符串操作本事汇总》、《Python入门与进级精湛教程》及《Python文件与目录操作技术汇总》

企望本文所述对咱们Python程序设计有着援救。

本文实例叙述了Python调用C语言的措施。分享给大家供大家参谋,具体如下:
Python中的…

正文实例汇报了Python调用C语言的章程。分享给大家供大家参考,具体如下:

Python达成运转其余程序的多样艺术实例深入分析,python实例深入分析

本文实例叙述了Python完成运行别的程序的多种形式。分享给大家供大家参谋,具体如下:

在Python中,能够实惠地采纳os模块来运行别的脚本可能程序,那样就能够在本子中央市直机关接选用别的脚本或程序提供的意义,而不用再次编写达成该意义的代码。为了更加好地决定运营的进度,能够动用win32process模块中的函数,假若想进一步调整进程,则可以使用ctype模块,直接调用kernel32.dll中的函数.

【方式一】使用os.system()函数运营别的程序

os模块中的system()函数能够一本万利地运转别的程序依然脚本,情势如下:

os.system(command)

command:
要试行的指令,如若要向脚本传递参数,能够应用空格分割程序及三个参数。

演示如下:

>>> import os
>>> os.system('notepad')    # 打开记事本程序.
0
>>> os.system('notepad 1.txt') # 打开1.txt文件,如果不存在,则创建.
0

【格局二】使用ShellExecute函数运营别的程序

除此之外采取os.system()函数外,还足以接纳win32api模块中的ShellExecute()函数来运作别的程序,格式如下:

ShellExecute(hwnd, op, file, args, dir, show)

hwnd:          父窗口的句柄,若无父窗口,则为0
op  :          要运维的操作,为open,print只怕为空
file:          要运营的顺序,也许张开的脚本
args:          要向程序传递的参数,如若张开的是文件则为空
dir :          程序开首化的目录
show:          是还是不是出示窗口

演示如下:

>>> import win32api
>>> win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 0)      # 后台执行
>>> win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 1)      # 前台打开
>>> win32api.ShellExecute(0, 'open', 'notepad.exe', '1.txt', '', 1)   # 打开文件
>>> win32api.ShellExecute(0, 'open', 'http://www.sohu.com', '', '', 1)  # 打开网页
>>> win32api.ShellExecute(0, 'open', 'D:\\Opera.mp3', '', '', 1)     # 播放视频
>>> win32api.ShellExecute(0, 'open', 'D:\\hello.py', '', '', 1)     # 运行程序

运用ShellExecute函数,就也正是在能源管理器中双击文件Logo,系统会打开相应程序运行。

【澳门葡京备用网址】Python调用C语言的艺术,程序的结合。NOTE:

win32api安装
因自家的是64的操作系统,所以下载了那些:pywin32-216.win-amd64-py2.7

【方式三】使用ShellExecute函数运转其余程序

创办进度:

为了有助于调节通过脚本运营的次序,能够动用win32process模块中的CreateProcess()函数创制

一个运营相应程序的进程。其函数格式为:

CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)

appName         可实践文件名
cmdLine         命令行参数
procAttr        进程安全品质
threadAttr      线程安全质量
InheritHandle  继承标记
CreationFlags  创制标识
currentDir      进程的当前目录
Attr             创立程序的特性

身体力行如下:

>>> win32process.CreateProcess('C:\\Windows\\notepad.exe', '', None, None, 0, win32process.CREATE_NO_WINDOW,
None, None, win32process.STARTUPINFO())
(<PyHANDLE:892>, <PyHANDLE:644>, 21592, 18780) # 函数返回进程句柄、线程句柄、进程ID以及线程ID

利落进程:

能够动用win32process.TerminateProcess函数来终止已开立的历程,
函数格式如下:

TerminateProcess(handle, exitCode)

handle     要操作的历程句柄
exitCode   进度退出代码

恐怕应用win32event.WaitForSingleObject守候创设的线程甘休,函数格式如下:

WaitForSingleObject(handle, milisecond)

handle     : 要操作的经过句柄
milisecond: 等待的小时,假使为-1,则直接等待.

演示如下:

>>> import win32process
>>> handle = win32process.CreateProcess('C:\\Windows\\notepad.exe', '', None, None, 0, win32process
.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO())      # 打开记事本,获得其句柄
>>> win32process.TerminateProcess(handle[0], 0)            # 终止进程

或者

>>> import win32event
>>> handle = win32process.CreateProcess('C:\\Windows\\notepad.exe', '', None, None, 0,
win32process.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO()) # 创建进程获得句柄
>>> win32event.WaitForSingleObject(handle[0], -1)           # 等待进程结束
0                                   # 进程结束返回值

【情势四】使用ctypes调用kernel32.dll中的函数

运用ctypes模块能够让Python调用位于动态链接库的函数。

ctypes模块为Python提供了调用动态链接库中等学校函授数的效果与利益。使用ctypes模块能够一本万利地调用由C语言编写的动态链接库,并向其传递参数。ctypes模块定义了C语言中的基本数据类型,而且能够兑现C语言中的结构体和联合体。ctypes模块能够干活在Windows,Linux,Mac
OS等二种操作系统,基本上达成了跨平台。

示例:

Windows下调用user32.dll中的MessageBoxA函数。

>>> from ctypes import *
>>> user32 = windll.LoadLibrary('user32.dll')
>>> user32.MessageBoxA(0, str.encode('Ctypes is so smart!'), str.encode('Ctypes'), 0)
1

澳门葡京备用网址 1

ctype模块中带有的基本项目与C语言类似,上边是多少个大旨的数据类型的对照:


Python中的ctypes模块大概是Python调用C方法中最轻松易行的一种。ctypes模块提供了和C语言包容的数据类型和函数来加载dll文件,因而在调用时不需对源文件做别的的修改。相当于如此奠定了这种格局的轻巧性。

Ctypes数据类型           C数据类型

c_char                    char
c_short                   short
c_int                     int
c_long                    long
c_float                   float
c_doule                   double

 

示范如下

c_void_p                  void *

愈多关于Python相关内容可查阅本站专项论题:《Python函数使用技艺总括》、《Python数据结构与算法教程》、《Python字符串操作技能汇总》、《Python入门与进级杰出教程》及《Python文件与目录操作本领汇总》

希望本文所述对我们Python程序设计有着援助。

本文实例陈述了Python完结运营别的程序的两种办法。分享给我们供我们参照他事他说加以考察,具…

 

完成两数求和的C代码,保存为add.c

概览

Python
是一种用于快捷开拓软件的编制程序语言,它的语法相比轻便,易于精通,但存在试行进程慢的难题,并且在管理有些难题时存在供应满足不了须求,如对Computer硬件系统的探望,对媒体文件的访谈等。而作为软件开垦的价值观编制程序语言——
C 语言,却能在这几个标题上很好地弥补 Python
语言的难以为继。由此,本文通超过实际例研商什么在 Python 程序中组成既有的 C
语言模块,富含用 C 语言编写的源程序和动态链接库等,进而丰硕发挥 Python
语言和 C 语言各自的优势。

回页首

//sample C file to add 2 numbers - int and floats
#include <stdio.h>
int add_int(int, int);
float add_float(float, float);
int add_int(int num1, int num2){
  return num1 + num2;
}
float add_float(float num1, float num2){
  return num1 + num2;
}

背景知识介绍

接下去将C文件编写翻译为.so文件(windows下为DLL)。下边操作会生成adder.so文件

Python 语言的特点

Python 作为一门程序开辟语言,被进一步多地应用到便捷程序开辟。Python
是一种解释型的,互动的,面向对象的编制程序语言,它蕴涵了模块化的操作,万分管理,动态资料形态,以及项指标行使。它的语法表达优良易读,具有众多精粹的脚本语言的特色:解释的,面向对象的,内建的高档数据结构,扶助模块和包,支持各类平台,可扩张。並且它还支持交互式格局运营,图形格局运营。它富有众多的编制程序分界面帮衬种种操作系统平台以及相当多的各种函数库,利用
C 和 C++ 能够对它进行扩张。

#For Linux
$ gcc -shared -Wl,-soname,adder -o adder.so -fPIC add.c
#For Mac
$ gcc -shared -Wl,-install_name,adder.so -o adder.so -fPIC add.c
#For windows
$
gcc -shared -Wl,-soname,adder -o adder.dll -fPIC add.c

C 语言的表征

C
语言作为最受大家应接的言语之一,有布满的发展根基。简洁紧凑、灵活方便,功用壮大是其特性。其它,C
语言是一门中级语言。它把高级语言的基本结交涉语句与低等语言的实用性结合起来。由于可以一贯访谈物理地址,能够一本万利的对硬件举办操作。由此,非常多的系列软件都以由
C 语言编写。

今昔在您的Python代码中来调用它

Python 语言与 C 语言的互相

为了节省软件开拓费用,软件开拓职员期待能够减弱的软件的付出时间,希望能够在长期内支付出安宁的制品。Python
功效庞大,简单易用,能够赶快支付应用程式。可是由于 Python
自己试行进度的局限性,对品质供给比较高的模块要求使用频率越来越高的程序语言实行付出,譬如C 语言,系统的其他模块运用 Python 举办高效支付,最终将 C
语言开采的模块与 Python 开垦的模块进行组合。在此背景下,基于 Python
语言与 C 语言的分级特色,用 C 语言来扩表现成的 Python
程序,显得很有意义。本文首先介绍二种常用的重组 Python 程序与 C
语言程序的措施,最终交给相应的实例。

回页首

from ctypes import *
#load the shared object file
adder = CDLL('./adder.so')
#Find sum of integers
res_int = adder.add_int(4,5)
print "Sum of 4 and 5 = " + str(res_int)
#Find sum of floats
a = c_float(5.5)
b = c_float(4.1)
add_float = adder.add_float
add_float.restype = c_float
print "Sum of 5.5 and 4.1 = ", str(add_float(a, b))

选取 ctypes 模块组成 Python 程序和 C 程序

出口如下

ctypes 模块

ctypes 是 Python 的四个标准模块,它富含在 Python2.3
及以上的本子里。ctypes 是一个 Python 的高级外界函数接口,它使得 Python
程序能够调用 C 语言编译的静态链接库和动态链接库。运用 ctypes
模块,能够在 Python 源程序中开创,访谈和操作简捷的或复杂的 C
语言数据类型。最为主要的是 ctypes 模块能够在五个阳台上行事,包括Windows,Windows CE,Mac OS X,Linux,Solaris,FreeBSD,OpenBSD。

接下去通过多少个差十分少的事例来看一下 ctypes 模块怎么着构成 Python 程序和 C
程序。

Sum of 4 and 5 = 9
Sum of 5.5 and 4.1 = 9.60000038147

源代码层面上的组合

行使 Python 自己提供的 ctypes 模块能够使 Python 语言和 C
语言在源代码层面上海展览中心开结合。本节介绍了怎么通过利用 ctypes 库,在 Python
程序中得以定义类似 C 语言的变量。

下表列出了 ctypes 变量类型,C 语言变量类型和 Python
语言变量类型之间的涉及:

在那一个例子中,C文件是自解释的,它富含四个函数,分别完成了整形求和和浮点型求和。

表 1. ctypes,c 语言和 Python 语言变量类型涉及
ctypes type c type Python type
c_char char 1-character string
c_wchar wchar_t 1-character unicode string
c_byte char int/long
c_ubyte unsigned char int/long
c_short short int/long
c_ushort unsigned short int/long
c_int int int/long
c_uint unsigned int int/long
c_long long int/long
c_ulong unsigned long int/long
c_longlong __int64 or long long int/long
c_ulonglong unsigned __int64 or unsigned long long int/long
c_float float float
c_double double float
c_char_p char * (NUL terminated) string or None
c_wchar_p wchar_t * (NUL terminated) unicode or None
c_void_p void * int/long or None

表 1 中的第一列是在 ctypes 库中定义的变量类型,第二列是 C
语言定义的变量类型,第三列是 Python 语言在不选拔 ctypes
时定义的变量类型。

举例:

在Python文件中,一初阶初步入ctypes模块,然后使用CDLL函数来加载大家成立的库文件。那样大家就能够由此变量adder来使用C类库中的函数了。当adder.add_int()被调用时,内部将发起几个对C函数add_int的调用。ctypes接口允许大家在调用C函数时采用原生Python中私下认可的字符串型和整型。

清单 1. ctypes 轻巧利用
 >>> from ctypes import *               # 导入 ctypes 库中所有模块
 >>> i = c_int(45)                        # 定义一个 int 型变量,值为 45 
 >>> i.value                               # 打印变量的值
 45 
 >>> i.value = 56                         # 改变该变量的值为 56 
 >>> i.value                               # 打印变量的新值
 56

从底下的例证能够更分明地看出 ctypes 里的变量类型和 C
语言变量类型的相似性:

而对此另外类似布尔型和浮点型那样的类型,必得求利用科学的ctype类型才足以。如向adder.add_float()函数字传送参时,
我们要先将Python中的十进制值转化为c_float类型,然后才具传递给C函数。这种措施即使轻便,清晰,可是却异常受限。举个例子,并无法在C中对指标开展操作。

清单 2. ctypes 使用 C 语言变量
 >>> p = create_string_buffer(10)      # 定义一个可变字符串变量,长度为 10 
 >>> p.raw                                  # 初始值是全 0,即 C 语言中的字符串结束符’ \0 ’
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
 >>> p.value = "Student"                 # 字符串赋值
 >>> p.raw                                  # 后三个字符仍是’ \0 ’
'Student\x00\x00\x00'
 >>> p.value = "Big"                      # 再次赋值
 >>> p.raw                                   # 只有前三个字符被修改,第四个字符被修改为’ \0 ’
'Big\x00ent\x00\x00\x00'

上边例子表明了指针操作:

更加的多关于Python相关内容感兴趣的读者可查阅本站专项论题:《Python进度与线程操作手艺总计》、《Python数据结构与算法教程》、《Python函数使用本事总括》、《澳门葡京备用网址,Python字符串操作技能汇总》、《Python入门与进级精彩教程》及《Python文件与目录操作手艺汇总》

清单 3. ctypes 使用 C 语言指针
 >>> i = c_int(999)                                 # 定义 int 类型变量 i,值为 999 
 >>> pi = pointer(i)                                # 定义指针,指向变量 i 
 >>> pi.contents                                     # 打印指针所指的内容
 c_long(999) 
 >>> pi.contents = c_long(1000)                   # 通过指针改变变量 i 的值
 >>> pi.contents                                     # 打印指针所指的内容
 c_long(1000)

上面例子表达了组织和数组的操作:

企望本文所述对我们Python程序设计具有协助。

清单 4. ctypes 使用 C 语言数组和结构体
 >>> class POINT(Structure):                 # 定义一个结构,内含两个成员变量 x,y,均为 int 型
 ...     _fields_ = [("x", c_int), 
 ...                 ("y", c_int)] 
 ... 
 >>> point = POINT(2,5)                       # 定义一个 POINT 类型的变量,初始值为 x=2, y=5 
 >>> print point.x, point.y                     # 打印变量
 2 5 
 >>> point = POINT(y=5)                             # 重新定义一个 POINT 类型变量,x 取默认值
 >>> print point.x, point.y                     # 打印变量
 0 5 
 >>> POINT_ARRAY = POINT * 3                    # 定义 POINT_ARRAY 为 POINT 的数组类型
 # 定义一个 POINT 数组,内含三个 POINT 变量
 >>> pa = POINT_ARRAY(POINT(7, 7), POINT(8, 8), POINT(9, 9))   
 >>> for p in pa: print p.x, p.y                # 打印 POINT 数组中每个成员的值
 ... 
 7 7 
 8 8 
 9 9

你恐怕感兴趣的稿子:

  • python和C语言混合编制程序实例
  • 利用C语言扩张Python程序的简约入门引导
  • Python调用C语言开垦的分享库方法实例
  • 使用Protocol
    Buffers的C语言拓宽提速Python程序的亲自去做
  • 采取C语言来扩充Python程序和Zope服务器的学科
  • python
    调用c语言函数的办法
  • 浅谈python和C语言混编的两种方法(推荐)
  • 用C语言模仿Python函数的一种简易实现方式
  • python
    调用c语言函数的实例批注
  • 用C语言模仿Python函数的实例

Python 访问 C 语言 dll

由此 ctypes 模块,Python 程序能够访谈 C 语言编写翻译的
dll,本节通过二个大概的事例,Python 程序 helloworld.py 中调用 some.dll
中的 helloworld 函数,来介绍 Python 程序怎样调用 windows 平台上的 dll。

  1. 导入动态链接库

    ##### 清单 5. ctypes 导入 dll

     from ctypes import windll # 首先导入 ctypes 模块的 windll 子模块
     somelibc = windll.LoadLibrary(some.dll) # 使用 windll 模块的 LoadLibrary 导入动态链接库
    
  2. 访谈动态链接库中的函数

    ##### 清单 6. ctypes 使用 dll 中的函数

     somelibc. helloworld() # 这样就可以得到 some.dll 的 helloworld 的返回值。
    

    整整 helloworld.py 是那样的:

    ##### 清单 7. Python hellpworld 代码

     from ctypes import windll 
    
     def callc(): 
     # load the some.dll 
     somelibc = windll.LoadLibrary(some.dll) 
     print somelibc. helloworld() 
     if __name__== “__main__”: 
     callc()
    

    在命令行运维 helloworld.py,在 console 上得以阅览 some.dll 中
    helloworld 的出口。

    ##### 清单 8. Python hellpworld Windows command console 运维输出

     C:\>python C:\python\test\helloworld.py 
     Hello World! Just a simple test.
    

Python 调用 C 语言 so

透过 ctypes 模块,Python 程序也能够访谈 C 语言编写翻译的 so 文件。与 Python
调用 C 的 dll 的措施基本一样,本节通过一个轻松的事例,Python 程序
helloworld.py 中调用 some.so 中的 helloworld 函数,来介绍 Python
程序怎么样调用 linux 平台上的 so。

  1. 导入动态链接库

    ##### 清单 9. ctypes 导入 so

     from ctypes import cdll      
     # 首先导入 ctypes 模块的 cdll 子模块,注意 linux 平台上使用 cdll 的,而不是 windll。
     somelibc = cdll.LoadLibrary(“./some.so”)
      # 使用 cdll 模块的 LoadLibrary 导入动态链接库
    
  2. 访问动态链接库中的函数

    ##### 清单 10. ctypes 使用 so 中的函数

     somelibc. helloworld() # 使用方法与 windows 平台上是一样的。
    

    任何 helloworld.py 是那样的:

    ##### 清单 11. Python helloworld 代码

     from ctypes import cdll 
    
     def callc(): 
     # load the some.so 
     somelibc = cdll.LoadLibrary(some.so) 
     print somelibc. helloworld() 
     if __name__== “__main__”: 
     callc()
    

    在命令行运维 helloworld.py,在 linux 标准输出上得以看到 some.so 中
    helloworld 的输出。

    ##### 清单 12. Python hellpworld Linux shell 运作输出

     [root@linux-790t] python ./helloworld.py 
     Hello World! Just a simple test.
    

回页首

Python 程序和 C 程序整合实例

以下大家举个例子用 Python 来实现四个小工具,用来兑现 hash
算法,查看文件的校验和(MD5,CRC,SHA1
等等)。通过翻看文件的校验和,能够知道文书在传输进程中是否被毁坏或歪曲。

Hash,一般翻译做“散列”,也可以有一贯音译为”哈希”的,正是把自由长度的输入(又称作预映射,pre-image),通过散列算法,调换来固定长度的输出,该出口正是散列值。这种转移是一种压缩映射,也正是,散列值的上空平时远低于输入的长空,差别的输入大概会散列成同样的输出,而不容许从散列值来独一的分明输入值。简单来说正是一种将随便长度的音讯压缩到某一定位长度的消息摘要的函数。

鉴于相对 C 语言来讲,Python 的运作功能十分低,因而大家的 Python
小工具利用多少个已有个别 C 语言的动态链接库 (hashtcalc.dll)
来贯彻大家的主次。本例中,大家使用 wxPython 编写简单的 GUI 分界面,通过
python 调用 hashtcalc.dll 的接口计算文件的校验和,然后输出在分界面上。

架构图

图 1. 工具的架构图

澳门葡京备用网址 2

hashcalc.dll 接口描述

函数名:calc_CRC32

函数:char* calc_CRC32(char *filename);

参数:文件名

返回值:字符串

表明:该函数对输入的文件内容开展计算,何况再次回到它的 CRC32

函数名:calc_MD5

函数:char* calc_MD5(char *filename);

参数:文件名

返回值:字符串

证实:该函数对输入的文件内容展开总计,并且重返它的 MD5

函数名:calc_SHA1

函数:char* calc_SHA1 (char *filename);

参数:文件名

返回值:字符串

表达:该函数对输入的文件内容举办总计,并且再次来到它的 SHA1

HashcalcAdapter 代码

HashcalcAdapter.py 实现了二个 python 的 class
HashcalcAdapter,HashcalcAdapter 对 hashtcalc.dl 的 C
语言接口举行了包装,使得别的 python 模块能够直接通过 HashcalcAdapter
使用 hashtcalc.dll 中贯彻的 hash 算法。具体的代码如下:

清单 13. HashcalcAdapter.py 代码
 from ctypes import windll 
 from ctypes import * 

 class HashcalcAdapter(object): 
    def __init__(self, dllpath): 
        self._dllpath = dllpath 
        self._libc = windll.LoadLibrary(self._dllpath) 

    def calc_CRC32(self, filename): 
         new_filename = c_char_p(filename) 
         return self._libc.calc_CRC32(new_filename) 

    def calc_MD5(self, filename): 
         new_filename = c_char_p(filename) 
         return self._libc.calc_MD5(new_filename) 

    def calc_SHA1(self, filename): 
         new_filename = c_char_p(filename) 
         return self._libc.calc_SHA1(new_filename)

运作界面

图 2. 工具的运作分界面

澳门葡京备用网址 3

回页首

总结

在软件开荒进度中并且利用 Python 语言和 C
语言,既可以够在增速开采进程的还要,也可以确认保障软件的运行质量。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website