在写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数据

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

最新文章

  1. js div及table首行顶部吸附示例
  2. Java 第17章 继承
  3. ecshop修改产品详情 折扣倒计时时间
  4. [HeadFist-HTMLCSS学习笔记][第五章认识媒体]
  5. CentOS用yum安装搭建LAMP
  6. QT解析命令行(QCommandLineOption和QCommandLineParser类)
  7. hdu 4911 Inversion(找到的倒数)
  8. 一个forward_list C++primer
  9. 区间DP 入门
  10. deeplearning.ai 卷积神经网络 Week 1 卷积神经网络 听课笔记
  11. NOIWC2018游记
  12. 利用AOP实现SqlSugar自动事务
  13. docker容器和本机互传文件
  14. microsoft.jet.oledb.4.0 未注册
  15. 【MySql】Order By 排序
  16. 06-开闭原则(OCP)
  17. 阿里云学习笔记之Java Web环境搭建
  18. 20181204-2 Final发布
  19. 011.MySQL双主多从+Keepalived配置
  20. yum 卸载 error: %preun(tengine-2.1.0-1.el6.x86_64) scriptlet failed, exit status 6

热门文章

  1. python框架django-web层
  2. Ymodem协议说明
  3. SQL 在OPENQUERY中使用参数,并作为表查询对象/不允许使用远程表值函数调用。
  4. [TestNG] [WARN] Ignoring duplicate listener : org.testng.IDEATestNGRemoteListenerEx
  5. 布署配置管理中心apollo
  6. git命令行获取某分支代码
  7. python爬虫的scrapy安装+pymongo的安装
  8. flutter Dialog里ListView的问题
  9. 如何通过SSH工具(SecureCRT、XShell)连接Vmware虚拟机中的Linux(CentOS7)
  10. Vue element 分页