执行 Python 中 main 中定义的除 argparse 之外的函数

Execute functions apart from argparse which are defined in main in Python

我正在使用 argparse 将用户参数用于我程序中的 运行 函数,运行ning 很好。但是我无法 运行 我在 main() 中调用的其他通用函数。它只是跳过那些没有 运行ning 并显示输出的功能。我该怎么做或者我哪里做错了?

假设在下面的程序中,我希望函数 mytop20 和 listapps 是 运行 使用用户参数,如果我删除样板 main() 函数但我的 objective 运行 没问题run_in_main() 函数应该 运行 in 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.

中获取了上面的代码

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

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

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