如何编写可以临时运行但也由主脚本调用的导入函数?

时间:2014-04-18 00:45:07

标签: python python-2.7

假设我有一个每周通过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()函数,因为它会在导入时运行。在我看来,我需要重组一些事情,但我需要一些最佳实践。

1 个答案:

答案 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()