Python 库 Click 如何实现这种功能?

2019-08-26 11:34:09 +08:00
 hujianxin

功能描述如下:

  1. 命令行 admin,里面有四个子命令,a、b、c、d
  2. 其中 a、b、c 这三个子命令属于一个 group1,d 单独属于一个 group2

group1 group 定义如下:

@click.group()
def group1("--name", prompt="something", help="something"):
	pass

group2 group 定义如下:

@click.group()
def group2():
	pass

如上所示,group1 所在的命令,在调用时,会 prompt 出一个 name 来,让用户输入,group2 所在的命令则没有这种。

v 站大佬遇到过这种需求吗?

1889 次点击
所在节点    Python
5 条回复
frostming
2019-08-26 12:55:02 +08:00
那么遇到了什么问题呢,你这种写法是可以工作的,调用时用

admin group1 a
admin group2 b
nthhdy
2019-08-26 13:11:00 +08:00
感觉你写的对啊
hujianxin
2019-08-26 13:38:07 +08:00
@frostming @nthhdy 多谢二位,我忘记说目的了。我目的是实现这样的:admin a, admin b,而不是在命令中加上 group,看到文档中有一个这样的语句,admin = click.CommandCollection(sources=[a, b]),但是这样之后发现,在 admin a 的时候,并没有 prompt 出 name 来让我输入。
希望我表达的够清楚
frostming
2019-08-28 11:34:56 +08:00
@hujianxin click.CommandCollection 会丢掉 group callback

Click 并不是那么自由的,这种情况你还是把需要 prompt 的命令都加上 @prompt_option
hujianxin
2019-08-28 13:57:57 +08:00
多谢多谢 @frostming

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX