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代码检查工具pylint 让你的python更规范
Sep 05 Python
python的else子句使用指南
Feb 27 Python
Python实现Linux的find命令实例分享
Jun 04 Python
python select.select模块通信全过程解析
Sep 20 Python
python交互式图形编程实例(三)
Nov 17 Python
python实现雨滴下落到地面效果
Jun 21 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
Python常见数据类型转换操作示例
May 08 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
wxPython多个窗口的基本结构
Nov 19 Python
Python devel安装失败问题解决方案
Jun 09 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模板技术[转]
2007/01/04 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python中正则表达式的使用详解
2014/10/17 Python
深入解析Python中的urllib2模块
2015/11/13 Python
Python通过文本和图片生成词云图
2020/05/21 Python
python打包生成so文件的实现
2020/10/30 Python
怎样从/向数据文件读/写结构
2014/11/23 面试题
应用心理学个人求职信范文
2013/12/11 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
办公室文书岗位职责
2013/12/16 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
2014财务年终工作总结
2014/12/08 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
律师函格式范本
2015/05/27 职场文书
大学生见习总结报告
2015/06/24 职场文书
高质量“欢迎词”
2019/04/03 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python