执行除argparse之外的函数,这些函数在Python中的main中定义

时间:2017-08-22 17:30:08

标签: python argparse

我正在使用argparse来使用用户参数在我的程序中运行函数,该函数运行得很好。但是我无法运行我在main()中调用的其他泛型函数。它只是在不运行和显示输出的情况下跳过这些功能。我该怎么做或我在哪里做错了?

让我们说下面的程序我希望函数mytop20和listapps使用用户参数运行,如果我删除样板main()函数但我的目标是run_in_main()函数应该在main()中运行

import argparse

def my_top20_func():
    print "Called my_top20_func"

def my_listapps_func():
    print "Called my_listapps_func"

def run_in_main():
    print "Called from main"

parser = argparse.ArgumentParser()
FUNCTION_MAP = {'top20' : my_top20_func,
                'listapps' : my_listapps_func }

parser.add_argument('command', choices=FUNCTION_MAP.keys())

args = parser.parse_args()

func = FUNCTION_MAP[args.command]
func()

if __name__ == "__main__":
    run_in_main()

由于我的用例非常相似,我从here获取了上述代码。

1 个答案:

答案 0 :(得分:0)

parse_args通常放在main部分中,因此仅在文件用作脚本时运行,而不是在导入时运行。考虑到这一点,我将您的脚本重新组织为:

def main(args):
    func = FUNCTION_MAP[args.command]
    func()

if __name__ == '__main__':
    args = parser.parse_args()
    main(args)