在写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》
其它文章
可以的话可以关注一波个人微信公号