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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
python opencv 直方图反向投影的方法
Feb 24 Python
Django框架 信号调度原理解析
Sep 04 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
Python如何实现定时器功能
May 28 Python
python数字转对应中文的方法总结
Aug 02 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
追求程序速度,而不是编程的速度
2008/04/23 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
javascript引导程序
2008/10/26 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
Django中几种重定向方法
2015/04/28 Python
Python中title()方法的使用简介
2015/05/20 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
使用python3构建文件传输的方法
2019/02/13 Python
Python中按键来获取指定的值
2019/03/02 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
升旗仪式演讲稿
2014/05/08 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
学习保证书100字
2015/02/26 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
Python基础之函数嵌套知识总结
2021/05/23 Python
python实现会员信息管理系统(List)
2022/03/18 Python