解析Python和单击命令行选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析Python和单击命令行选项相关的知识,希望对你有一定的参考价值。

我经常想要分析一个用Click构建的CLI程序,但我无法弄清楚如何解析Python命令行选项和click命令行选项/参数。例如,如果我的脚本采用了一个选项和两个参数,我可以像以下一样运行:

python add.py --verbose 1 2

同样,当我分析一个简单的(非Click)脚本时,我可以这样做:

python -m cProfile -o stats.txt add_no_click.py 1 2

但是当我想要分析Click脚本时,我得到了这个:

python -m cProfile -o stats.txt add.py --verbose 1 2
Error: no such option: -o

我知道我必须遗漏一些文件。对于它的价值,我在Windows 10 64位上使用Python 2.7,虽然我怀疑它与答案有关。

答案

对不起自我回答,但希望这可以帮助别人。我做的愚蠢的事情(我在上面的问题中没有表现出来)是忘记用sys.argv[1:]打电话给main。

示例程序:

import click

@click.command()
@click.option('-v', '--verbose', is_flag=True)
@click.argument('a', type=click.INT, required=True)
@click.argument('b', type=click.INT, required=True)
def main(verbose, a, b):
    if verbose:
        print('The answer is {}'.format(a + b))
    else:
        print(a + b)

if __name__ == '__main__':
    import sys
    main(sys.argv[1:])

运行它:

> python -m cProfile -o foo.stats add.py --verbose 1 2
The answer is 3

并将个人资料信息写入foo.stats

以上是关于解析Python和单击命令行选项的主要内容,如果未能解决你的问题,请参考以下文章

python 解析命令行选项

python 命令行参数解析学习

python argparse模块解析命令行选项简单使用

Python命令行选项参数解析策略

python 使用optparse解析命令行选项

parser.add_argument()用法——命令行选项参数和子命令解析器