在写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文件的更多相关文章

  1. 掌握这个Python小技巧,轻松构建cytoscape导入文件

    今天小编和大家分享如何借助Python脚本轻松构建cytoscape导入文件.Cytoscape是一个非常适合展示各种相互作用关系的可视化软件. 具体来说就是可以用于蛋白互作网络的展示,miRNA与蛋 ...

  2. python小技巧 小知识

    python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...

  3. Python获取程序运行目录和脚本目录

    Python获取程序运行目录和脚本目录 import os import sys #获取脚本所在目录 print os.path.split( os.path.realpath( sys.argv[0 ...

  4. Python运行目录或压缩文件

    如果你在你的工程文件根目录下放一个__main__.py文件,你就可以使用根目录运行整个程序. 你的工程像这样 ex. app/ |-test.py |-test2.py |-__main__.py ...

  5. 「Python实用秘技01」复杂zip文件的解压

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的新系列文章「Python实用秘技」的第1 ...

  6. Python补充02 Python小技巧

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...

  7. python 小技巧(import模块、查询类继承关系、安装包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...

  8. 让你瞬间萌比的35个python小技巧

    今天在看python算法的时候,看到一篇关于python的小技巧.瞬间萌比了,原来python也可以这样玩,太神奇了.萌比的是原来这么简单的东西自己都不知道,虽然会写.废话不多说了,开始上菜. 1.拆 ...

  9. Python小技巧:使用一行命令把你的电脑变成服务器

    不知道你有没有遇到这么一种情况,就是你有时候想要把电脑上的一些东西传输到你的手机或者 Pad ,你要么需要使用数据线连接到电脑,有时候还要装各种驱动才可以进行数据传输,要么需要借助第三方的工具,在局域 ...

随机推荐

  1. autolayout原理

    Autolayout Engine根据视图间的约束关系得到一个线性方程组,求这个线性方程组的解即得到每个视图的位置信息.(x,y,width,height) 参考: https://www.jians ...

  2. 基于C/S 结构的IM即时通讯软件--上篇

    目的:实现类似QQ群聊的聊天室,可以看到好友列表及互相传送信息. 分析:可基于C/S结构实现即时通讯 1.创建基于对话框的MFC程序(支持windows套接字),并增加相应的类与结构体,完善对话框界面 ...

  3. Delphi Sysem.JSON 链式写法(转全能中间件)

    链式写法有很多优点:连贯.语意集中.简洁.一气呵成.可读性强.比如要把 3.1415926 中的 59 提取为一个整数:Pi.ToString().Substring(5,2).ToInteger() ...

  4. 奇怪,Linux下find找不到文件了

    你遇到过linux下root用户执行find命令按文件名在根目录下查找不到指定文件的情况吗?如果你遇到这种情况,你分析可能有哪几种原因导致?这里记录一下这个有意思的问题. 问题现象 实现一个工具,需要 ...

  5. AlphaGo的前世今生(一)Deep Q Network and Game Search Tree:Road to AI Revolution

    这一个专题将会是有关AlphaGo的前世今生以及其带来的AI革命,总共分成三节.本人水平有限,如有错误还望指正.如需转载,须征得本人同意. Road to AI Revolution(通往AI革命之路 ...

  6. JavaScript Array some() 方法

    some 判断数组中是否至少有一个元素满足条件 只要有一个满足就返回true 只有都不满足时才返回false 语法: array.some(function(value,index,array),th ...

  7. css第三天

    三 1.标准模式与怪异模式(针对盒子模型)与边框,填充,边界,有关 标准模式(默认):元素的总宽度 = 盒子的宽度 + 左右填充宽度 + 左右边框宽度元素的总高度 = 盒子的高度 + 上下填充高度 + ...

  8. Cocos2dx开发之设计模式

    cocos2dx的几种常见设计模式 一 单例模式 Cocos2dx中的单例有:CCDirector,CCTextureCache,CCSpriteFrameCache,CCScriptEngineMa ...

  9. java中LIst转换成Json

    List转换成json串 public String getNameListByID(Long Id) { List<Name> nameLists= nameService.select ...

  10. rror: too many values to unpack

    方法返回值