V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hujianxin
V2EX  ›  Python

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

  •  
  •   hujianxin · 2019-08-26 11:34:09 +08:00 · 1959 次点击
    这是一个创建于 1916 天前的主题,其中的信息可能已经有所发展或是发生改变。

    功能描述如下:

    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 站大佬遇到过这种需求吗?

    5 条回复    2019-08-28 13:57:57 +08:00
    frostming
        1
    frostming  
       2019-08-26 12:55:02 +08:00
    那么遇到了什么问题呢,你这种写法是可以工作的,调用时用

    admin group1 a
    admin group2 b
    nthhdy
        2
    nthhdy  
       2019-08-26 13:11:00 +08:00
    感觉你写的对啊
    hujianxin
        3
    hujianxin  
    OP
       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
        4
    frostming  
       2019-08-28 11:34:56 +08:00
    @hujianxin click.CommandCollection 会丢掉 group callback

    Click 并不是那么自由的,这种情况你还是把需要 prompt 的命令都加上 @prompt_option
    hujianxin
        5
    hujianxin  
    OP
       2019-08-28 13:57:57 +08:00
    多谢多谢 @frostming
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:06 · PVG 21:06 · LAX 05:06 · JFK 08:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.