近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档的Argparse模块的教程。

  注意:还有两个模块与Argparse功能相似,getopt和optparse。 argparse基于optparse,因此在使用方面非常相似,但是不推荐使用optparse,官方文档更推荐argparse

1.Argparse的作用

举一个小例子,在Linux系统中,我们常用到 ls 这个命令,默认情况下 ls 会显示当前目录的所有文件或文件夹名称,但是当我们想要获得更多信息,如文件的权限、建立时间等,就需要在 ls 命令后加上 -all 或其他被允许的指令,因此对 ls 这个命令而言,假设我们想改变程序的行为,显示每个文件的更多信息,而不是只显示文件名。 在这种情况下,-all 被称为可选参数。同样的, ls 还具有 -h 这个可以选择的参数,这表示打开帮助文本。 这非常有用,你可以遇到一个你以前从未使用过的程序,并且可以简单地通过阅读帮助文本来弄清楚它是如何工作的。

  Argparse的作用就是为py文件封装好可以选择的参数,使他们更加灵活,丰富。

2.Argparse的基础

  下面介绍argparse的基础调用。把下面的代码写入,保存为prog.py

 import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

  OK,调用python3,运行一下试试:

$ python3 prog.py
$ python3 prog.py --help
usage: prog.py [-h]
optional arguments:
-h, --help show this help message and exit
$ python3 prog.py --verbose
usage: prog.py [-h]
prog.py: error: unrecognized arguments: --verbose
$ python3 prog.py foo
usage: prog.py [-h]
prog.py: error: unrecognized arguments: foo

  第一个命令直接运行脚本程序,没有任何输出,因为该脚本并没有运行任何选项,源程序也没有设置默认,所以不会有参数传出。第二个命令使用--help参数的时候没有报错,系统给出了结果,那是系统默认的帮助信息。很明显,最后两次使用都报错了,因为该脚本内并没有写入verbose和foo。

2.给Argparse加上参数

  同样的,写上一段python代码,保存为prog.py供之后调用:

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)

  运行结果如下:

$ python3 prog.py
usage: prog.py [-h] echo
prog.py: error: the following arguments are required: echo
$ python3 prog.py --help
usage: prog.py [-h] echo positional arguments:
echo optional arguments:
-h, --help show this help message and exit
$ python3 prog.py foo
foo

  添加了add_argument()后,这是我们用来指定程序可以接受的命令行选项。 此时我已经命名 echo (linux中的输出命令),所以当调用时,要求我们指定一个选项。parse_args()方法实际上从指定的选项中返回一些数据,此时是echo。argparse可以直接执行(即不需要指定哪个存储后的变量)。 它的名字和指定的字符串参数 echo 相匹配。

Python的Argparse模块是什么?(未完)的更多相关文章

  1. python大法好——模块(内置模块未完)

    模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块. Python模块有什么作用? 1.模块内有许多函数方法,利用这些方法可以更简单的完成许多工作.2.模块 ...

  2. 使用IntelliJ IDEA进行Python远程调试的需求(未完)

    使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...

  3. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  4. Python的argparse模块的使用

    Python的argparse模块的使用 最近看到一份Pytorch代码有以下内容: # Training settings parser = argparse.ArgumentParser(desc ...

  5. python中argparse模块简单使用

    python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...

  6. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

  7. 【python】argparse模块

    来源:http://www.2cto.com/kf/201412/363654.html argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.ar ...

  8. python的argparse模块

    一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,例如python parseTes ...

  9. Python的Argparse模块是什么?

            近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档 ...

随机推荐

  1. mac 上格式化磁盘出现MediaKit报告设备上的空间不足以执行请求的解决办法

    1.问题描述: 我使用是一个2T移动硬盘,分了5个区 2.分析原因:因为mac OSX的日志式格式需要有EFI分区进行引导,而我的移动硬盘是没有EFI分区的,这样的话就会出现问题: 3.解决办法: 1 ...

  2. js中的isNaN()函数

    <html> <head> <script type="text/javascript" src="function.js"> ...

  3. Apache服务器安装-apache已经卸载,如何删除注册在系统的服务

    cmd进入windows的命令行客户端,执行:sc delete apache 注意:以管理员的身份删除,同理,此方法也可以删除其他类似的服务.例如sc delete MongoDB.

  4. HDU - 1789 贪心

    贪心策略:按照分数降序排列,如果分数相同将截止时间早的排在前面.每次让作业尽量晚完成,因此需要逆序枚举判断这一天是否已经做了其他作业,如果没时间做这个作业说明不能完成,否则将这一天标记. AC代码 # ...

  5. SpringBoot实战 之 接口日志篇

    在本篇文章中不会详细介绍日志如何配置.如果切换另外一种日志工具之类的内容,只用于记录作者本人在工作过程中对日志的几种处理方式. 1. Debug 日志管理 在开发的过程中,总会遇到各种莫名其妙的问题, ...

  6. Object方法

    1. getClass() 返回此 Object 的运行时类. 2. hashCode() 返回该对象的哈希码值. 3. equals() 指示其他某个对象是否与此对象“相等”. 4. toStrin ...

  7. List,Set,Map

    1.Collection 和 Map 的区别 容器内每个为之所存储的元素个数不同.Collection类型者,每个位置只有一个元素.List,SetMap类型者,持有 key-value pair,像 ...

  8. 常用u-boot命令详解(全) 2

    (8) USB 操作指令 指令 功能 usb reset 初始化USB控制器 usb stop [f] 关闭USB控制器 usb tree 已连接的USB设备树 usb info [dev] 显示US ...

  9. 使用mongoVUE删除大量数据的情况下失效问题

    昨天有一个系统出现了问题,导致半夜时大量的错误数据产生,早晨一早接到上边通知让把这些数据尽数删除. 不可否认在数据操作时mongoVUE更加直观,因此一般情况下我也都是使用这个工具,但是今天却出现了问 ...

  10. Extjs 4.0 Tab页

    1.JSON代码 Ext.MyTabs=Ext.extend(Ext.TabPanel ,{ xtype:"tabpanel", activeTab:2, width:694, h ...