Python学习笔记-argparse

来源:互联网 发布:js a标签点击事件 编辑:程序博客网 时间:2024/05/18 00:21

使用argparse模块可以使Python脚本很方便地从命令行中获取并解析出所需的参数。使用起来非常简单,只需几行代码即可。从官网的文档中学习过后,分享点心得。
官网链接:
15.4. argparse — Parser for command-line options, arguments and sub-commands — Python 2.7.11 documentation

add_argument()方法中一些参数说明

  • 1.name or flags
    这是add_argument()唯一一个必须的参数,简单地说这个参数是我们所想要从命令行中获得的参数的名字,但其实它并不是,dest才是这个获得的参数的名字。它更像一个标志,指示一个参数。它可以是一个名字,也可以是多个可选的名字。

  • argparse获取的命令行参数有两类:optional argument和positional argument。区别体现在name or flags中。

  • optional argument是可选的参数,在命令行中运行脚本时无论输不输入均可(如果你的脚本中不需要这个参数也能正确运行的话)。在add_argument()中name or flags必须带有前缀‘-’,且可有多个可选,如:

parser.add_argument('-f', '--foo')
  • 在命令行中输入(或使用)该参数时在需要带有将这个name or flags写出来,即’-f’或’–foo’,与输入的参数之间隔有空格或等号。表示输入的参数为与之对应的optional argument。
    也有不需要带参数,只输入该name or flags的情况,如默认的’-h’就是如此。

  • positional argument是必须输入的参数(一般情况下),如果运行脚本时没有输入对应的参数,则会报错。它的name or flags必须是一个不带’-‘前缀的名字。在命令行中输入该参数时不需要带有这个name or flags。
    如果你parser添加过多个argument,在调用parse_args()时,会先识别所有带有前缀’-‘的optional argument,然后再将剩余的参数按顺序被视为对应的positional argument。

  • 2.action
    指示如何处理命令行参数。有以下可选:

    • ’store’ - 保存你所输入的参数,这个是默认值。
    • ‘store_const’ - 与optional argument搭配使用,当从命令出现了该argument,则保存const中的常量。
    • ‘store_true’ and ‘store_false’ - 与上面’store_const’类似,只是保存的是真假值,若在命令行中使用了该argument,则保存对应的真假值,否则保存相反的。
    • ‘append’ - 与optional argument搭配使用,保存一个列表,内容为每次输入的参数,这个argument可在命令行中被多次输入。
    • ‘append_const’ - 与上面类似,保存一个列表,内容为在命令行中出现过的每个具有相同dest的argument中的const。可用于保存多个常量进同一个列表。注意parse_args()中返回的真正给你是dest。
    • ‘count’ - 与optional argument搭配使用,保存一个整数,为这个argument在命令行中出现的次数。
    • ‘help’
    • ‘version’
  • 3.nargs
    负责指示从命令行中读取参数的数目。有以下可选:
    • N (an integer) - 使用后N个命令行参数将被保存到一个列表当中,即使N为1时也会保存一个只有一个元素的列表。
    • ‘?’ - 一个参数将被保存,如果不使用这个argument则保存default中的值,与optional argument或positional argument搭配均可,当与optional argument搭配时,仅使用了该argument而没有再输入参数时,将保存const中的值。
    • ‘*’ - 保存任意多个参数为一个列表,不可用在多个positional argument中使用,一个还是可以的,可以在多个optional argument中使用,因为当存在两个或以上的positional argument使用’*’时,区分不出参数所对应的argument,而optional argument需要在参数前写出name or flags,则不存在此问题。
    • ‘+’ - 与’*’类似,但参数个数至少为1。
    • argparse.REMAINDER - 所有剩下的命令行参数都保存到一个列表中。
  • 4.const
    顾名思义,常量,配合某些action和nargs使用,不从命令行中接收参数,而保存这个const的值。注意const默认值为None。
  • 5.default
    缺省值。
    所有的optional arguments和一些positional arguments可能不出现在命令行中,这时就是default起作用。
    当optional arguments的name or flags也没有出现在命令行时,则保存default的值。
    如果default中的值是字符串,解析器会像从命令行中获取它一样去解析。
    positional arguments与nargs为’?’或’*’搭配时,default值会在没有与之对应的命令行参数出现时被保存。
    default值为argparse.SUPPRESS时,当命令行中没有出现与之对应的命令行参数,则当做什么也没发生,即当这个argument不存在。
  • 6.type
    数据的类型,可以是各种类型,甚至自定义。 将获取的字符串自动转化对应的数据类型。
  • 7.choices
    供选项,输入的命令行参数必须包含在这里面,否则报错。任何具有in操作的的对象都可以是choices。
  • 8.required
    必须的,如果required = True,那么这个optional arguments必须要出现在命令行中,否则报错。但这就很矛盾了,这个可选的参数是必选的。
  • 9.help
    不多说。
  • 10.metavar
    打印help信息时,显示的各个argument的名字。
  • 11.dest
    从命令行中获取的参数(或者是const或者是default),最终被保存到dest中,它自动生成的名字取决于name or flags。如果是positional argument,那就是这个name or flags。如果是optional argument,就取name or flags中长名字中最长的一个,并去掉’- -‘,和将多余的’-‘转化为’_’,若没有长名字,则取第一个短名字。
    也可以自己重新定义,在add_argument()加上这个参数dest=即可。

会使用add_argument()方法,argparse就已经掌握了一大半了,普通地运用已经没有问题了,关于argparse更多使用的方法和技巧,在官方文档里都有介绍,我就不一一列举了。
文中没有插入什么代码,详细的可以去官方文档里查看。
即使英语不怎么样,Python代码还是足够看明白的。

0 0
原创粉丝点击