python获取命令行参数实例方法讲解
Python在命令行解析方面给出了类似的几个选择:自己解析, 自给自足(batteries-included)的方式,以及大量的第三方方式。
自己解析
你可以从sys模块中获取程序的参数。
import sys if __name__ == '__main__': for value in sys.argv: print(value)
自给自足
在Python标准库中已经有几个参数解析模块的实现:getopt、optparse,以及最近的argparse。argparse允许程序员为用户提供一致的、有帮助的用户体验,但就像它的GNU前辈一样,它需要程序员做大量的工作和“模板代码”才能使它“奏效”。
from argparse import ArgumentParser if __name__ == "__main__": argparser = ArgumentParser(description='My Cool Program') argparser.add_argument("--foo", "-f", help="A user supplied foo") argparser.add_argument("--bar", "-b", help="A user supplied bar") results = argparser.parse_args() print(results.foo, results.bar)
CLI的现代方法
Click框架使用装饰器的方式来构建命令行解析。
import click @click.command() @click.option("-f", "--foo", default="foo", help="User supplied foo.") @click.option("-b", "--bar", default="bar", help="User supplied bar.") def echo(foo, bar): """My Cool Program It does stuff. Here is the documentation for it. """ print(foo, bar) if __name__ == "__main__": echo()
在Click接口中添加参数就像在堆栈中添加另一个装饰符并将新的参数添加到函数定义中一样简单。
知识拓展:
Typer建立在Click之上,是一个更新的CLI框架,它结合了Click的功能和现代Python类型提示。使用Click的缺点之一是必须在函数中添加一堆装饰符。CLI参数必须在两个地方指定:装饰符和函数参数列表。Typer免去你造轮子去写CLI规范,让代码更容易阅读和维护。
import typer cli = typer.Typer() @cli.command() def echo(foo: str = "foo", bar: str = "bar"): """My Cool Program It does stuff. Here is the documentation for it. """ print(foo, bar) if __name__ == "__main__": cli()
到此这篇关于python获取命令行参数实例方法讲解的文章就介绍到这了,更多相关python获取命令行参数实现方法内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!