argparse.ArgumentParser() & sys.argv() 函数解析器

目录

  • 1.argparse.ArgumentParser()
    • 相关参数
      • argparse.ArgumentParser() 对象
      • add_argument() 方法
  • 2.sys.argv()

1.argparse.ArgumentParser()

看一遍例子就懂了。
1.创建你需要的 test.py 文件:

import argparse

# (1) 声明一个parser(解析器)
parser = argparse.ArgumentParser()

# (2) 添加参数
parser.add_argument("parg")             # 位置参数,这里表示第一个出现的参数赋值给parg
parser.add_argument("--digit",type=int,help="输入数字") # 通过 --digit xxx 声明的参数,为int类型
parser.add_argument("--name",help="名字",default="cjf") # 同上,default 表示默认值

# (3) 读取命令行参数并解析
args = parser.parse_args()

# (4) 调用这些参数
print(args.parg)
print("echo ={0}".format(args.digit))
print("name = {}".format(args.name))

2.在命令运行端,执行:python test.py myposition --digit 2222,输出结果:

myposition
echo =2222
name = cjf

相关参数

argparse.ArgumentParser() 对象

argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)

prog - 程序的名称(默认:sys.argv[0])
usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
description - 在参数帮助文档之前显示的文本(默认值:无)
epilog - 在参数帮助文档之后显示的文本(默认值:无)
parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
formatter_class - 用于自定义帮助文档输出格式的类
prefix_chars - 可选参数的前缀字符集合(默认值:’-’)
fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
argument_default - 参数的全局默认值(默认值: None)
conflict_handler - 解决冲突选项的策略(通常是不必要的)
add_help - 为解析器添加一个 -h/–help 选项(默认值: True)
allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)

add_argument() 方法

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
action - 当参数在命令行中出现时使用的动作基本类型。
nargs - 命令行参数应当消耗的数目。
const - 被一些 action 和 nargs 选择所需求的常数。
default - 当参数未在命令行中出现时使用的值。
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。

2.sys.argv()

相比argparse.ArgumentParser() ,sys.argv() 要简单一些。
sys.argv的列表就是我们输入的所有参数的列表,第一个元素是文件的全名,第二个元素是输入的第一个参数,以此类推。。。。。。
我们通过一个极简单的temp2.py程序的运行结果来说明它的用法。

#temp2.py
import sys
print(132456)

if __name__ == '__main__':
    if ('--help' in sys.argv) or ('-h' in sys.argv):
        print("This is help contents:.......")

将temp2.py保存对应目录下。
用运行的方式打开目录,先换盘,再切换目录。

(lunwen) C:\Users\54719>e:

(lunwen) E:\>cd E:\my_projects\two_reference_projects\membership-inference-master

直接运行这个文件加参数运行,区分不同:

(lunwen) E:\my_projects\two_reference_projects\membership-inference-master>python temp2.py
132456

(lunwen) E:\my_projects\two_reference_projects\membership-inference-master>python temp2.py -h
132456
This is help contents:.......

说明sys.argv这个变量包含了我们输入的 “-h” 并传入文件内部运行。
接下来我们探究一下sys.argv的列表

(lunwen) E:\my_projects\two_reference_projects\membership-inference-master>python temp2.py a s d f g
('sys.argv[0]:', 'temp2.py')
('sys.argv[1:]:', ['a', 's', 'd', 'f', 'g'])

可见输入的参数a s d f g全都被依次放进sys.argv[1]、sys.argv[2]…

我们来看一下Mnist.py里比较高端的用法:

def main(model='mlp', num_epochs=500):
	........

if __name__ == '__main__':
    if ('--help' in sys.argv) or ('-h' in sys.argv):
        print("Trains a neural network on MNIST using Lasagne.")
        print("Usage: %s [MODEL [EPOCHS]]" % sys.argv[0])
        print()
        print("MODEL: 'mlp' for a simple Multi-Layer Perceptron (MLP),")
        print("       'custom_mlp:DEPTH,WIDTH,DROP_IN,DROP_HID' for an MLP")
        print("       with DEPTH hidden layers of WIDTH units, DROP_IN")
        print("       input dropout and DROP_HID hidden dropout,")
        print("       'cnn' for a simple Convolutional Neural Network (CNN).")
        print("EPOCHS: number of training epochs to perform (default: 500)")
    else:
        kwargs = {}
        if len(sys.argv) > 1:
            kwargs['model'] = sys.argv[1]
        if len(sys.argv) > 2:
            kwargs['num_epochs'] = int(sys.argv[2])
        main(**kwargs)

附源文件:https://github.com/Lasagne/Lasagne/blob/master/examples/mnist.py

参考:https://blog.csdn.net/vcvycy/article/details/88600134?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159012922019724811835873%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159012922019724811835873&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v25-2-88600134.nonecase&utm_term=argparse.ArgumentParser

你可能感兴趣的:(argparse.ArgumentParser() & sys.argv() 函数解析器)