Python学习笔记_使用argparse模块从命令行读取参数

#使用流程:


import sys

import argparse


def cmd():

    args = argparse.ArgumentParser(description = 'Personal Information ',epilog = 'Information end ')

    #必写属性,第一位

    args.add_argument("name", type = str, help = "Your name")

    #必写属性,第二位

    args.add_argument("birth", type = str, help = "birthday")

    #可选属性,默认为None

    args.add_argument("-r",'--race',  type = str, dest = "race",   help = u"民族")

    #可选属性,默认为0,范围必须在0~150

    args.add_argument("-a", "--age",  type = int, dest = "age",    help = "Your age", default = 0,  choices=range(150))

    #可选属性,默认为male

    args.add_argument('-g',"--gender",   type = str, dest = "gender",    help = 'Your gender', default = 'male', choices=['male', 'female'])

    #可选属性,默认为None,-p后可接多个参数

    args.add_argument("-p","--parent",type = str, dest = 'parent', help = "Your parent", default = "None", nargs = '*')

    #可选属性,默认为None,-o后可接多个参数

    args.add_argument("-o","--other", type = str, dest = 'other',  help = "other Information",required = False,nargs = '*')

    args = args.parse_args()                 #返回一个命名空间,如果想要使用变量,可用args.attr

    print "argparse.args=",args,type(args)

    print 'name = %s'%args.name

    d = args.__dict__

    for key,value in d.iteritems():

        print '%s = %s'%(key,value)

if __name__=="__main__":

    cmd()


'''
python argv_argparse.py -h

python argv_argparse.py xiaoming 1991.11.11

python argv_argparse.py xiaoming 1991.11.11 -p xiaohong xiaohei -a 25 -r han -g female -o 1 2 3 4 5 6

'''




注意:

  1. 参数分为positional argmuents(必选参数)和optional arguments(可选参数)
  2. 命令行第一个参数是需要运行的文件名
  3. 先写pos,后写opt,按照顺序
  4. 命令行中是无法识别python数据类型的,所以参数形式只能是str,int等,例如列表等,逗号也只是字符或参数分割作用。
  5. 想要传进的参数是列表形式,可以使用nargs属性,多个参数值在传入后被存入列表,或者直接在默认值内写入列表。
  6. 处理boolean类型的参数的时候并不能自动转换参数类型,即指定了其类型为bool,但无论我们在命令行中给这个参数传入什么值(如True,False,1,0等),参数值总是为True。(迂回解决方案)

 

疑问:

  1. 可选参数中,写这两个参数名有什么意义?
  2. dest参数的作用,目前知道的是给参数指定名称,可以通过args.gender取到。
  3. 从文件导入参数,一种解决方法是直接在程序中打开文件读内容

 

参考:

 https://blog.csdn.net/lis_12/article/details/54618868

官方文档

 

你可能感兴趣的:(Python入门)