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中的for 循环
Jun 09 Python
Python 基础教程之包和类的用法
Feb 23 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 Python
在windows下Python打印彩色字体的方法
May 15 Python
Python常见数字运算操作实例小结
Mar 22 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
Python如何实现机器人聊天
Sep 10 Python
python读取excel数据并且画图的实现示例
Feb 08 Python
常用的Python代码调试工具总结
Jun 23 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 Python
python和anaconda的区别
May 06 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 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
node.js实现快速截图
2016/08/27 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
js实现3D旋转效果
2020/08/18 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python去掉字符串中空格的方法
2014/03/11 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
学python最电脑配置有要求么
2020/07/05 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
大型晚会策划方案
2014/02/06 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA