假设我有一个每周通过cronjob运行的主脚本。该脚本从其他Python文件中导入许多不同的函数,并按顺序运行它们的函数。我也喜欢能够运行主脚本运行的几个功能,但是从终端运行ad-hoc。构建主脚本和包含要运行的函数的单个文件的最佳方法是什么?现状示例:
master_script.py
import do_bulk_things as b
import do_another_thing as a
b.do_first_bulk_thing()
b.do_second_bulk_thing()
if b.do_third_bulk_thing():
a.my_other_thing()
do_bulk_thinkgs.py
def do_first_bulk_thing():
# Code
def do_second_bulk_thing():
# Code
def do_third_bulk_thing():
# Code
if successful:
return True
do_another_thing.py
def my_other_thing():
# Code
如果我想运行 my_other_thing()而不运行整个 master_script.py ,我应该如何定义和调用所有内容?导入的文件只有函数定义,所以我不能通过运行python do_another_thing.py
来实际执行任何函数;我也不应该在 do_another_thing.py 中执行 my_other_thing()函数,因为它会在导入时运行。在我看来,我需要重组一些事情,但我需要一些最佳实践。
答案 0 :(得分:1)
在some more research之后尝试回答我自己的问题,然后lead me here。在 do_bulk_thinks.py 和 do_another_thing.py 中执行已定义和导入的功能,但使用__main__
可以阻止功能在导入时运行。所以 master_script.py 保持不变,但其他文件会有:
<强> do_bulk_things.py 强>
def do_first_bulk_thing():
# Code
def do_second_bulk_thing():
# Code
def do_third_bulk_thing():
# Code
if successful:
return True
if __name__ == '__main__':
do_first_bulk_thing()
do_second_bulk_thing()
do_third_bulk_thing()
do_another_thing.py
def my_other_thing():
# Code
if __name__ == '__main__':
my_other_thing()