python - 对 python 脚本文件的说明

标签 python

只需要一些关于如何设计 python 脚本文件 test.py 的说明。

  1. 定义函数时,它们是否必须在导入之后立即位于文件顶部?

  2. 我应该在我的文件中进行主要检查吗?

  3. 我想在我的服务器上作为 cron 作业运行此文件。如果文件变得太大(其中也有我的 sqlalchemy 定义),如何将文件分成多个文件?我希望通过将文件放入我的服务器中的文件夹中来轻松部署。

最佳答案

大多数脚本如下所示:

import module1
import module2

CONSTANT=...

def foo():
   ...

def bar():
   ....

class Baz():
   ....

def run(verbose=False):
    ....

if __name__=='__main__':
    import optparse
    def parse_options():
        usage = 'usage: %prog [options]'
        parser = optparse.OptionParser(usage=usage)
        parser.add_option('-v', '--verbose', dest='verbose',
                          action='store_true', 
                          default=False,
                          help="verbose")
        return parser.parse_args()
    def cli():
        opt,args=parse_options()        
        run(verbose=opt.verbose)
    cli()

所以脚本的主体主要由函数/类定义组成。 (通常)很少有代码不在函数/类定义中。

我会尝试以任何有利于组织和可读性的方式对功能进行分组。如果您认为某个函数可以在该特定脚本以外的地方重用,请将其放入模块中,并将该模块导入到此脚本中。

在 crontab 中定义 PYTHONPATHPATH。那么从 cron 运行脚本应该没有问题。

关于python - 对 python 脚本文件的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379794/

相关文章:

python - 在 virtualenv 中升级 python

python - 在其他 df Pandas 下添加 df

python - 使用 python panda 按月、年计算出现频率

python - PyTorch:预期输入batch_size (12) 匹配目标batch_size (64)

python - 将日期与四位数年份进行比较

python - imaplib 错误地将 `=` 和 `3D` 字符添加到电子邮件中的 URL 文本中

python - 支持向量-/Logistic-回归 : do you have benchmark results for the boston housing data?

java - 如何通过流为 C++、Java 和 Python 交换二进制结构化数据?

python - 两个时间戳之间的差异舍入到小时并将列添加到数据框

python - 使用 numpy 数组作为 lambda 参数?