python命令行解析工具Argparse

python命令行解析工具,argparse,它是python标准库中推荐使用的编写命令行程序的工具。

基本概念

我们通过一个常见的ls命令来展示argparse的功能。


从以上的命令中,我们能够了解一下几个基本概念:

  • ls命令在没有参数的情况下也是可以运行的,默认打印出当前目录下的所有内容。
  • 我们想要显示一个不同的目录mnist-data。我们所做的就是明确了常见的定位参数(positional argument),这样命名是因为需要程序根据参数在命令行中的位置而决定做什么。这个概念与命令cp更为接近,它的用法是cp src dest,src 表示的是你想要拷贝的文件,dest表示你想要将文件拷贝到哪里。
  • 现在,我想要改变程序的行为。我想显示文件的详细信息而不仅仅是文件名,参数 -l 则是我们所知道的可选参数(optional argument)
  • 最后一句话是显示帮助文档的一个片段,当你遇到你从未使用过的命令时,你可以通过它学习怎么使用。
基本认识
我们从一个基本程序开始(它什么也不做)
#!/user/bin/env python
# coding=utf-8

import argparse

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


结果分析:

  • 若不给参数而运行这个程序,将不会得到任何结果。
  • 第二条命令显示了使用argparse的好处,你什么也没做,却得到了一个很好的帮助信息
位置参数
#!/user/bin/env python
# coding=utf-8

import argparse

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

结果分析:

  • 这次,我们增加了一个add_argument()方法,用来设置程序可接受的命令行参数。
  • parse_args()方法实际上从我们的命令行参数中返回了一些数据,在上面的例子中是echo
尽管自动产生的帮助信息展示地很美观,但是我们仍然无法只根据echo 这个参数知道它是做什么的。所以,我们增加了一些东西,使它变得更有用。
#!/user/bin/env python
# coding=utf-8

import argparse

parser=argparse.ArgumentParser()
parser.add_argument("echo",help="echo the string you use here")
args=parser.parse_args()
print args.echo


在此基础上,我们再多改变一点:(计算输入参数square的平方)

#!/user/bin/env python
# coding=utf-8

import argparse

parser=argparse.ArgumentParser()
parser.add_argument("square",help="display a square of a given number")
args=parser.parse_args()
print args.square**2


这个程序并不能正确运行,因为argparse会将输入当字符串处理,所以我们需要设置它的类型:(type=int)

import argparse
parser=argparse.ArgumentParser()
parser.add_argument("square",help="display a square of a given number",type=int)
args=parser.parse_args()
print args.square**2

输出结果如下:


  • add_argument()方法,用来设置可接受的命令行参数。现在要运行函数就必须输入一个参数。
  • parse_args()方法实际上从我们的命令行中返回了一些数据。
  • argparse默认接受到的参数按字符串处理,所以我们需要设置它的类型(type=int)

#!/user/bin/env python
# coding=utf-8

import argparse

p=argparse.ArgumentParser()
p.add_argument('--one',default=1,type=int, help='the first argument')
p.add_argument('--two',default=2,type=int, help='the second argument')
p.add_argument('--docs-dir',default="./", help='document directory')

args=p.parse_args()
#可以打印出来查看
print args
#打印某一个参数
print args.one
print args.docs_dir #经过parse_args()函数后参数名称去掉了前面的"--",所有的"-"转换为"_"


带参数运行程序


如果运行时带了一个不认识的参数,就会报错。


有时我们不希望这样,我们的需求是:只提取有用的参数,不认识的参数丢弃但并不需要报错

#!/user/bin/env python
# coding=utf-8
import sys
import argparse

p=argparse.ArgumentParser()
p.add_argument('--one',default=1,type=int, help='the first argument')
p.add_argument('--two',default=2,type=int, help='the second argument')
p.add_argument('--docs-dir',default="./", help='document directory')

#这个函数将认识的和不认识的参数分开放进2个变量中
args, remaining=p.parse_known_args(sys.argv)

#可以打印出来查看
print args
print remaining









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值