看了几个python程序,但凡涉及到从命令行直接读取参数的时候,都有相似的如下代码,例如从命令行读取变量x,y的值

 
  1. import argparse
  2. parser = argparse.ArgumentParser()
  3. parser.add_argument( "x", help= "横坐标",type=int)
  4. parser.add_argument( 'y', help= "纵坐标",type=int)
  5. args = parser.parse_args()

作为刚开始学python的小白,我一开始不太明白这段代码干啥用的,所以从网上找了很多博客文章,看了一圈之后感觉还是官网上的解释最详细明了,https://docs.python.org/2/howto/argparse.html,看完之后至少不迷糊了,所以写一个教程防止自己忘了。

这个模块的作用就是从命令行读取参数嘛,那到底是这么读取的呢,首先来看一个简单的程序 ,命名为no.py:

 
  1. import argparse
  2. import argparse
  3. parser = argparse.ArgumentParser()
  4. parser.add_argument( "x", help= "横坐标",type=int)
  5. parser.add_argument( 'y', help= "纵坐标",type=int)
  6. args = parser.parse_args()
  7. x=args.x
  8. y=args.y
  9. print(x,y);

这个程序可以实现从命令行读取x,y的值之后在输出。可以打开cmd,输入样例如下:python no.py 3 4

则出现结果为:

可以看到,程序执行了输出命令print,将x,y的值输出出来。

下面对这几个函数及其中的参数做一下说明。

其实这些函数的默认的参数都有很多,但我看很多程序基本也就用了几个,对一个小程序来说已经足够了。

add_argument()函数

可以看到上面这个函数中有三个参数,

第一个是名称,就是为你读取的变量起一个名字,例如x,y,这个你随便起一个你自己要名字。

第二个是help,这是提示信息,告诉你这个变量是啥东西,怎么看这些信息呢,在命令行输入:python no.py -h

然后就会出现帮助信息了

第三个是type,就是参数的类型嘛,整型,字符型,浮点型,看你想把它作为什么类型的变量了。

到这里我感觉就可以解决绝大多数问题了,但还有一个小地方就是关于那种前面带“-”的那种参数比如说什么“-v”,“-p”,"-h"这种奇怪的东西,一开始我也云里雾里,不知道这些是干嘛用的,然后看完了https://docs.python.org/2/howto/argparse.html之后大概有点明白了。想要弄明白的童鞋可以直接看Introducing Optional arguments 这部分

Optional arguments (可选参数)

上文中提到的这些带“-”的参数形式就是可选参数。

按我自己的理解嘛,这就好比是吃烧烤一样,在你点串儿的时候,烤串师傅一般会问你“放不放辣?”,如果你说放,那他就会在你的串上放上点辣椒面儿。

像“x”,“y”这样的参数就好比你点的串儿,而那些带“-”的就好比是辣椒面儿

比如:参数 x 表示羊肉串儿,那么 在 x 后面加上你自己定义的“-v”,即 x -v 就是加了辣的串,然后如果是 x -vvv,那就是变态辣,

或者你在设一个“-p”,用 x -p 表示加了孜然的羊肉串, x -v -p 就表示加了孜然和辣椒的羊肉串。

下面展示一个实例:

 
  1. import argparse
  2. import argparse
  3. parser = argparse.ArgumentParser()
  4. parser.add_argument( "x", help= "横坐标",type=int)
  5. parser.add_argument( 'y', help= "纵坐标",type=int)
  6. parser.add_argument( "-v",help= "x翻倍",action= "store_true")
  7. args = parser.parse_args()
  8. if args.v:
  9. args.x=args.x* 2;
  10. x=args.x
  11. y=args.y
  12. print(x,y);

如果加了参数 -v ,则x变为输入值的两倍。

还有一种就是 -v 后面带数字,比如 -v 1,-v 2 等等,这时候代码就要修改成

parser.add_argument("-v",help="x翻倍",type=int)
 

如果是 -vvv这种代码要修改成:

parser.add_argument("-v",help="x翻倍",action="count")
 

判断条件中的代码也要做相应的修改。详细的过程在链接中都有,想要了解详情的朋友可以自己去看一下。

到这最基本的功能就讲完了,目前只是做一点小程序,所以其他的没怎么看,不过这一点已经够我用的啦。