我正在使用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获取了上述代码。
答案 0 :(得分:0)
parse_args
通常放在main
部分中,因此仅在文件用作脚本时运行,而不是在导入时运行。考虑到这一点,我将您的脚本重新组织为:
def main(args):
func = FUNCTION_MAP[args.command]
func()
if __name__ == '__main__':
args = parser.parse_args()
main(args)