首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CMD上调用部分Python代码的快捷方式

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

Stack Overflow用户
提问于 2020-03-19 23:33:59
回答 1查看 36关注 0票数 0

我有一个从3个帐户更新信息的代码,我想能够使用命令行上的快捷方式来更新基于我想要的帐户。目前修复有3种不同的python代码。我只想要一个代码,将有一个快捷方式来执行第一个功能,第二个功能,第三个功能,以及所有。我认为我需要使用argparse,但我遇到的问题是试图基于1个帐户运行代码。下面的部分代码。

代码语言:javascript
复制
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)))
EN

回答 1

Stack Overflow用户

发布于 2020-03-19 23:45:08

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

代码语言:javascript
复制
from argparse import ArgumentParser

# Assumed definitions of HCM, SHC, cloud, and _msg

parser = ArgumentParser()
subparser = p.add_subparsers(dest='name')
subparser.add_parser("hcm").set_defaults(updater=HCM().update)
subparser.add_parser("shc").set_defaults(updater=SHC().update)
subparser.add_parser("cloud").set_defaults(updater=Cloud().update)

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

然后是像这样的命令

代码语言:javascript
复制
myscript hcm

将产生以下结果之一

代码语言:javascript
复制
hcm was updated

代码语言:javascript
复制
hcm was already up-to-date

作为输出。

为了能够运行三者中的任何一个子集,我将去除子解析器,而使用普通选项。就像这样

代码语言:javascript
复制
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)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60760404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档