解析 Python 并单击命令行选项
parsing both Python and click command line options
我经常想分析一个用 Click 构建的 CLI 程序,但我不知道如何解析 Python 命令行选项和 click 命令行 options/arguments。例如,如果我的脚本有一个选项和两个参数,我可以 运行 就像:
python add.py --verbose 1 2
同样,当我分析一个简单的(非点击)脚本时,我可以这样做:
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
。
我经常想分析一个用 Click 构建的 CLI 程序,但我不知道如何解析 Python 命令行选项和 click 命令行 options/arguments。例如,如果我的脚本有一个选项和两个参数,我可以 运行 就像:
python add.py --verbose 1 2
同样,当我分析一个简单的(非点击)脚本时,我可以这样做:
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:]
.
示例程序:
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
。