.py文件是什么

.py文件是什么,第1张

py文件是python的脚本文件。

Python在执行时,首先会将py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,NET是一致的。

然而,Python Virtual Machine与Java或NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。

这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或NET的功能更强大,而是说和Java 或NET相比,Python的Virtual Machine距离真实机器的距离更远。

或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。基于C的Python编译出的字节码文件,通常是pyc格式。

扩展资料:

python的优点:

1、简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

2、易学:Python极其容易上手,因为Python有极其简单的说明文档。

3、速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。

4、免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

5、高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

6、可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。

7、解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。

运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。

在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。

8、面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

9、可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。

10、可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

11、丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的 *** 作。

12、规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。

参考资料来源:百度百科-python

PyInstaller是一个用来将Python程序打包成独立可执行软件的工具,支持 Windows、Linux 和 Mac OS X。生成的可执行软件在没有Python的环境中可以直接运行,方便软件分发,进一步降低使用成本,提升使用效率。

下面演示如何使用 PyInstaller 将程序打包成Windows下的exe软件。

使用pip的方式进行安装,这样可以自动安装其他依赖库。

如果pip还未安装,请参考我的另一篇文章《 Python pip包管理工具 》

在cmd命令行控制台或者VS Code内置的终端输入命令行生成应用,首先将当前路径切换到Python程序所在的路径(如下示例的SubOcrpy文件在python文件夹下的SubOcr文件夹内),然后输入生成应用的命令。

命令执行成功后在 I:\work\python\SubOcr\dist 文件夹下生成了SubOcr文件夹,里面包含了SubOcrexe文件。整个SubOcr文件夹就是一个绿色软件,随便移动到任何位置都可运行。

实际上在用pyinstaller命令时会在Python程序的所在路径生成一个后缀为spec的同名文件,然后根据此文件的配置生成应用,这就是PyInstaller的原理。这样做的好处是spec保存了生成应用的配置,每次重新生成应用时可以省略指定参数,尤其是指定了其他的资源、程序库时。我们可以通过以下命令先生成spec文件。

pyi-makespec的命令参数跟pyinstaller的相同,在生成spec文件后可以对其部分选项进行编辑(可以用VS Code或自带的记事本编辑),添加更多参数,然后再用pyinstaller命令生成应用。

spec文件的主要选项:

上面示例的SubOcr用到了opencc和opencv-python,其中opencc下的数据文件和opencv-python下的dll文件在生成应用时不会自动导入(缺少这些文件应用无法正常使用),因此需要在spec文件中指定路径。对spec文件的修改如下:

以上便是PyInstaller打包Python程序的全过程,如果在此过程中遇到问题,可以在评论区留言,定当知无不言,言无不尽。

笨办法是在循环中不断读取目录以及目录中文件的最后修改时间,如果有变更,则说说文件被修改。

这种办法需要不断的循环读取文件信息,这对cpu占用较高,同时也会产生一定的磁盘IO,短时间小范围使用尚可,如果长时间运行在服务器上,或者监控一个包含很多文件的目录则不可取。

办法之二是利用 *** 作系统提供的功能来实现。

比如在Windows中,可以利用Windows APIReadDirectoryChangesW来实现。这可以免去大量的磁盘IO。因为文件修改的频率一般不高,可以使用定计时器进行循环,对cup的占用也会少很多。

如果程序需要使用一些配置文件时,一般也是用相对路径的,这样也容易出问题,这时需要在启动程序时切换到程序所在的路径。

syspath[0] 是程序所在的目录,在程序开头处加上 oschdir(syspath[0]) 就可以了。

如果是使用 py2exe 打包的程序,syspath[0] 值是 路径名\libraryzip , 再处理一下这个就可以:

ddir = syspath[0]

if ospathisfile(ddir):

ddir,filen = ospathsplit(ddir)

oschdir(ddir)

py2exe啊,一点也不老,稳定而且好用。

*** 作步骤如下:

如果你有一个名为helloworldpy的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的windows系统上,那么首先你应写一个用于发布程序的设置脚本例如mysetuppy,在其中的setup函数前插入语句import py2exe 。

mysetuppy示例如下:

# mysetuppy

from distutilscore import setup

import py2exe

setup(console=["helloworldpy"])

然后按下面的方法运行mysetuppy:

python mysetuppy py2exe

上面的命令执行后将产生一个名为dist的子目录,其中包含了helloworldexe,python24dll,libraryzip这些文件。

如果你的helloworldpy脚本中用了已编译的C扩展模块,那么这些模块也会被拷贝在个子目录中,同样,所有的dll文件在运行时都是需要的,除了系统的dll文件。

dist子目录中的文件包含了你的程序所必须的东西,你应将这个子目录中的所有内容一起发布。

默认情况下,py2exe在目录dist下创建以下这些必须的文件:

1、一个或多个exe文件。

2、python##dll。

3、几个pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的dll文件,这些dll是pyd所需要的。

4、一个libraryzip文件,它包含了已编译的纯的python模块如pyc或pyo

上面的mysetuppy创建了一个控制台的hellowordexe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetuppy中的console=["helloworldpy"]替换为windows=["myscriptpy"]既可。

py2exe一次能够创建多个exe文件,你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本,那么这是很有用的。

运行下面个命令,将显示py2exe命令的所有命令行标记。

python mysetuppy py2exe --help

以上就是关于.py文件是什么全部的内容,包括:.py文件是什么、使用PyInstaller打包Python程序、python 监控一个文件夹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10168952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存