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二分法搜索算法实例分析
May 11 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
python使用xslt提取网页数据的方法
Feb 23 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python中的错误如何查看
Jul 08 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 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
header()函数使用说明
2006/11/23 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
Python计算回文数的方法
2015/03/11 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Python运算符重载详解及实例代码
2017/03/07 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
秋季运动会开幕词
2015/01/28 职场文书
公司出纳岗位职责
2015/03/31 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python