zoukankan      html  css  js  c++  java
  • Python小技巧:运行目录或ZIP文件

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

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

  • 相关阅读:
    netcore使用IdentityServer在nginx下502错误的解决
    更新到.netcore3.0后找不到dotnet-ef的解决办法
    openssh-win64 on windows2016 ssh pub key config
    405 Method Not Allowed error with PUT or DELETE Request on IIS Server
    minikube windows hyperx填坑记
    angular当router使用userhash:false时路由404问题
    内网gitlab11.2升级至11.4.5
    Angular7上手体验
    动态规划之背包问题
    Union-Find算法详解
  • 原文地址:https://www.cnblogs.com/huanping/p/10579562.html
Copyright © 2011-2022 走看看