Python小技巧:运行目录或ZIP文件

时间:2023-12-31 15:14:15

在写Python程序时,将不同功能代码写在不同文件中是一个好习惯,但是对于某些情况。如需要将脚本提供给别人运行使用,如若将程序写在几个文件中,则需要将文件都发给他人。别人就需要管理不同文件,这样对于别人来说会显得杂乱,麻烦。如果将代码都写在一个文件中,对于简单的脚本没啥毛病,但如果复杂了代码量多了,都写在一个文件,则对自己而言不好维护。

如果能将不同文件代码放在一个目录中,直接运行目录,不就能解决了这个问题了吗。Python提供这样的方式:Python能直接执行一个包含 __main__.py的目录或者ZIP文件

例子

目录结构:

.
|—— ABC/
|—— A.py
|—— __main__.py

示例代码:

# A.py
def echo():
print('ABC!') # __main__.py
if __name == '__main__':
import A
A.echo()

运行情况:

$ python ABC
ABC!

就如同上面这个简单例子,写代码按照这样的结构,将多个代码文件放在一个目录中,提供一个主程序入口__main__.py。然后运行目录时,python解释器会自动运行__main__.py中的代码。

此外你还可以直接将多个文件压缩成一个zip文件。直接运行zip文件也同样可以。

目录结构:

.
|—— ABC.zip/
|—— A.py
|—— __main__.py

运行情况:

$ python ABC.zip
ABC!

其它

直接运行目录还是压缩成zip,j就看你自己喜欢啥了。不过如果除代码文件外还有其它数据文件的话,可能目录的方式要方便点,你可以直接使用使用这个数据文件。

而压缩成ZIP文件后,则需要利用解压zip文件的库如zipfile 来读取zip文件内的数据文件。

自Python3.5 开始,Python标准库中新增了zipapp模块,也可以创建这样的可执行zip文件。

参考

《Python Cookbook》

其它文章

优雅的查看json数据

可以的话可以关注一波个人微信公号

Python小技巧:运行目录或ZIP文件