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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
python采集博客中上传的QQ截图文件
Jul 18 Python
python使用cPickle模块序列化实例
Sep 25 Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
Python处理中文标点符号大集合
May 14 Python
django Serializer序列化使用方法详解
Oct 16 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python数学形态学实例分析
Sep 06 Python
python如何控制进程或者线程的个数
Oct 16 Python
python如何查找列表中元素的位置
May 30 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php中如何防止表单的重复提交
2013/08/02 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python中的全局变量如何理解
2020/06/04 Python
Python执行时间的几种计算方法
2020/07/31 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
安全生产投入制度
2014/01/29 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
党员创先争优承诺书
2014/03/26 职场文书
社区居务公开实施方案
2014/03/27 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
庆祝教师节主题班会
2015/08/17 职场文书