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之正规地说一句话
Sep 28 Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
python skimage 连通性区域检测方法
Jun 21 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
Python为何不支持switch语句原理详解
Oct 21 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 Python
用Python生成会跳舞的美女
Jan 18 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
destoon之一键登录设置
2014/06/21 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
浅析js封装和作用域
2013/07/09 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
Python多进程编程技术实例分析
2014/09/16 Python
Python3字符串学习教程
2015/08/20 Python
python的re正则表达式实例代码
2018/01/24 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
python实现事件驱动
2018/11/21 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
二审答辩状范文
2015/05/22 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
如何书写邀请函?
2019/06/24 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
MongoDB使用场景总结
2022/02/24 MongoDB
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL