首页 > 编程知识 正文

python实例,python调用pyd文件

时间:2023-05-04 05:19:54 阅读:22595 作者:4895

什么是pyc文件

pyc是二进制文件,是编译py文件后生成的文件,即字节代码。 当py文件成为pyc文件时,加载速度会提高。 此外,pyc是跨平台字节码,由python虚拟机执行。 这是虚拟机的概念,如JAVA和. NET。

但是,pyc的内容与python的版本相关,根据版本而编译的pyc文件不同,不能运行2.5编译的pyc文件、2.4版本的python。

为什么需要pyc文件

这个需求太明显了。 因为py文件可以直接看到源代码,所以如果你在开发商业软件,源代码也不能泄露吧。 所以需要编译成pyc后再发布。 当然,pyc文件也可以反向编译。 不同版本编译的pyc文件不同。 根据python源代码提供的opcode,可以基于pyc文件反编译py文件的源代码。 您可以在网上找到用于反向编译python2.3版本pyc文件的工具,该工具从python2.4开始收费。 如果需要反编译较新版本的pyc文件,则必须自己动手,但可以自行修改python源代码中的opcode文件,然后重新编译python,以防止非法者被破解。

生成单个pyc文件

python是个好东西,它提供了一个内置类库,用于将py文件编译为pyc文件。 此模块就是py_compile模块。

使用起来非常简单,可以通过idle直接将一个py文件编译为pyc文件,如下所示: (windows环境中的假设)

import py_compile

py _ compile.com pile (r ' h :/game/test.py ' )。

compile函数原型:

compile (文件[,cfile[,dfile[,doraise]]] )

file指示需要编译的py文件的路径

cfile表示编译的pyc文件的名称和路径,默认情况下,在file文件名后面加c或o、o表示优化的字节码

dfile这个参数用英语不知道。 请多关照。 (鄙视自己)原文: itisusedasthenameofthesourcefileinerrormessagesinsteadoffile

doraise可以有两个值: True或False。 如果为True,则抛出PyCompileError。 否则,编译文件时将出现错误,默认情况下显示在sys.stderr上,并且不会抛出异常

(来自python2.5文档)

批量生成pyc文件

一般来说,我们的项目在一个目录下。 除了编译单个py文件外,还必须将文件夹下的整个py文件编译为pyc文件。 python还为我们提供了另一个模块,compileall。 使用方法如下。

导入完成全部

compile all.com pile _ dir (r ' h :/game ) )。

现在,game目录及其子目录下的py文件将编译为pyc文件。 有点,方便吧。 让我们来看看compile_dir函数的说明。

compile_dir[,maxlevels[,ddir[,force[,rx[,quiet]]]]] )

dir指示需要编译的文件夹的位置

maxlevels表示需要递归编译的子目录的级别数,默认值为10个级别。 这意味着,缺省情况下,10级子目录中的py文件将编译为pyc

我不懂dir英语。 译文: itisusedasthebasepathfromwhichthefilenamesusedinerrormessageswillbegenerated。

如果force为True,则强制编译为pyc。 即使当前pyc文件是最新的,也会强制编译一次。 pyc文件包含时间戳,python编译器根据时间确定是否需要重新生成pyc文件

rx表示正则表达式。 例如,可以排除不需要的目录,也可以仅编译满足条件的目录

如果quiet为True,则编译后,标准输出不会打印消息

(来自python2.5文档)

总结

使用上述方法,可以轻松地将py文件编译为pyc文件。 这样可以隐藏部分源代码。 python制作商业化软件的时候,一部分的安全性有保证吧。 继续学习,看看如何修改opcode。

这里的说明,例如,我现在有以下文件。

example.pyc

runme.py

runme.py正在调用example.py文件,但当前只有pyc文件。 那么,不能正常工作吗? 答案是“不”。 是可以执行的。 所以pyc可以作为保密使用。

转载来源: http://blog.csdn.net/Yu 132563/article/details/40922049

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。