python argparse

你学废了吗

Posted by Yue on January 18, 2021

argparse模块

argparse方便修改参数。

以下都是抄的知乎原文,写得非常清晰!

传入一个参数

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个数字')
#type是要传入的参数的数据类型  help是该参数的提示信息
parser.add_argument('integers', type=str, help='传入的数字')

args = parser.parse_args()

#获得传入的参数
print(args)

操作args字典

print(args.integers)

传入多个参数

parser.add_argument('integers', type=str, nargs='+',help='传入的数字')

nargs是用来说明传入的参数个数,’+’ 表示传入至少一个参数。

改变数据类型

parser.add_argument('integers', type=int, nargs='+',help='传入的数字')

直接改type参数即可

位置参数

在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同,这是因为采用了位置参数,例如

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('param1', type=str, help='姓')
parser.add_argument('param2', type=str, help='名')
args = parser.parse_args()

#打印姓名
print(args.param1+args.param2)

如果我们将代码parser.add_argument('param1', type=str,help='姓')parser.add_argument('param2', type=str,help='名')互换位置,即第4行和第五行代码,再重新运行,打印出来的姓名是反的。

可选参数

parser.add_argument('--family', type=str,help='姓')
parser.add_argument('--name', type=str,help='名')

在关键词前面加上–

在命令行中输入(输入变麻烦了,但是增加了命令行中的可读性,不容易因为参数传入顺序导致数据错乱。)

python demo.py --family=张 --name=三

运行结果

张三

默认值

add_argument的default参数

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str, default='张',help='姓')
parser.add_argument('--name', type=str, default='三', help='名')
args = parser.parse_args()

#打印姓名
print(args.family+args.name)

在命令行中分别输入 python demo.pypython demo.py --family=李

运行结果分别为

张三

李三

必需参数

add_argument的required参数

parser.add_argument('--family', type=str, help='姓')
parser.add_argument('--name', type=str, required=True, default='', help='名')

Reference:

argparse模块用法实例详解 https://zhuanlan.zhihu.com/p/56922793