Function 在CMD上调用部分Python代码的快捷方式

Function 在CMD上调用部分Python代码的快捷方式,function,argparse,Function,Argparse,我有一个更新3个帐户信息的代码,我希望能够使用命令行上的快捷方式根据我想要的帐户进行更新。目前,修复程序有3种不同的python代码。我只需要一个代码,将有一个快捷方式来执行第一个函数,第二个函数,第三个函数,以及所有。我想我需要使用argparse,但我遇到的困难是试图运行基于其中一个帐户的代码。下面是代码的一部分 if __name__ == "__main__": def _msg(updated): return "was

我有一个更新3个帐户信息的代码,我希望能够使用命令行上的快捷方式根据我想要的帐户进行更新。目前,修复程序有3种不同的python代码。我只需要一个代码,将有一个快捷方式来执行第一个函数,第二个函数,第三个函数,以及所有。我想我需要使用argparse,但我遇到的困难是试图运行基于其中一个帐户的代码。下面是代码的一部分

if __name__ == "__main__":
    
    def _msg(updated):
        return "was updated" if updated else "already up-to-date"
    
   
    
    Cloud_Updater = Cloud()
    updated = Cloud_Updater.update()
    print("Cloud {}.\n".format(_msg(updated)))

argparse
可以通过其他“隐藏”选项的默认值处理此问题。这是根据中的示例改编的

然后像这样的命令

myscript hcm
两者都会产生

hcm was updated

作为输出


为了能够运行三个子集中的任何一个子集,我将去掉子Parser并使用普通选项。差不多

parser = ArgumentParser()
parser.add_argument("--hcm", action='append_const', const=('hcm', HCM().update), dest='updaters')
parser.add_argument("--shc", action='append_const', const=('shc', SHC().update), dest='updaters')
parser.add_argument("--cloud", action='append_const', const=('cloud', Cloud().update), dest='updaters')
parser.set_defaults(updaters=[])

args = parser.parse_args()
for name, updater in args.updaters:
    updated = updater()
    print("{} {}.".format(name, _msg(updated)))

这是有效的,除了它只输出HCM,即使我使用命令“shc”和“cloud”。这是因为它是默认方法吗?我还想问一下,我怎样才能打电话给所有3个人?它是这样的:subparser.add_parser(“all”).set_defaults(updater=Cloud(),updater=SHC(),updater=HCM().update)Hm;修复此问题后,我会获得适当的
hcm
shc
cloud
。您好,现在可以使用了,谢谢。如何添加一个调用所有3的参数?
hcm was already up-to-date
parser = ArgumentParser()
parser.add_argument("--hcm", action='append_const', const=('hcm', HCM().update), dest='updaters')
parser.add_argument("--shc", action='append_const', const=('shc', SHC().update), dest='updaters')
parser.add_argument("--cloud", action='append_const', const=('cloud', Cloud().update), dest='updaters')
parser.set_defaults(updaters=[])

args = parser.parse_args()
for name, updater in args.updaters:
    updated = updater()
    print("{} {}.".format(name, _msg(updated)))