python获取命令行参数实例方法讲解


Posted in Python onNovember 02, 2020

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获取命令行参数实现方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python导入oracle数据的方法
Jul 10 Python
python中abs&map&reduce简介
Feb 20 Python
基于Python实现的微信好友数据分析
Feb 26 Python
Python中str.join()简单用法示例
Mar 20 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python生成器的使用方法和示例代码
Mar 04 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
Python的条件锁与事件共享详解
Sep 12 Python
Django密码存储策略分析
Jan 09 Python
python 如何对logging日志封装
Dec 02 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 #Python
详解tensorflow之过拟合问题实战
Nov 01 #Python
python cookie反爬处理的实现
Nov 01 #Python
10个python爬虫入门实例(小结)
Nov 01 #Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
Nov 01 #Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 #Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 #Python
You might like
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
解析如何用php screw加密php源代码
2013/06/20 PHP
php实现读取超大文件的方法
2014/07/28 PHP
PHP线程的内存回收问题
2016/07/08 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
js加强的经典分页实例
2013/03/15 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
使用Python生成url短链接的方法
2015/05/04 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
python中wheel的用法整理
2020/06/15 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
运动会稿件100字
2014/09/24 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
场地使用证明模板
2014/10/25 职场文书
少先队工作总结2015
2015/05/13 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL