Python命令行参数定义及注意事项:argparse使用详解
本文详细介绍Python中利用argparse库定义和获取命令行参数的方法。涵盖参数命名、类型转换、默认值设置及帮助信息输出等核心功能,并指出定义顺序的重要性。此外,通过实验验证了numpy数组在命令行传参时的局限性,帮助开发者避免常见错误。
Python命令行参数定义及注意事项:argparse使用详解
在命令行环境中执行Python脚本是日常开发中的常见操作,本文将重点讲解如何在代码中定义并接收命令行传递的参数。
常规用法
1 常规用法
在Python脚本中,主要依赖以下代码片段来定义并获取需要在命令行中赋值的参数:
import argparse
parser = argparse.ArgumentParser("Description.") # ————1————
parser.add_argument('--test1', type=str, default="1", help="Test1 help.") # ————2————
parser.add_argument('--test2', type=float, default=2.1, help="Test2 help.") # ————2————
args = parser.parse_args() # ————3————
print(args)
test1, test2 = args.test1, args.test2 # ————4————
print(type(test1), test1, test1 + " add test")
print(type(test2), test2, test2 + 100)
注释说明:
1、获取外部参数对象实例。可以通过传入字符串来描述总体参数的用途。
2、定义外部参数,可多次调用以定义多个参数。函数第一个参数为参数名称,建议以两个减号开头,中间避免使用数字、字母或下划线以外的符号,以防出错。type参数指定传入值的转换类型,例如将--test1定义为str,即使命令行传参时未加引号,函数也会将其转换为字符串(注意:不加引号的字符串不能包含空格)。若--test2定义为float,即使命令行传参带有引号,只要内容能转换为数字,函数也会将其转为float类型。default参数用于设置默认值。如果命令行未对参数赋值而使用默认值,函数不会对default进行type类型的转换,因此default最好直接定义为type指定的类型(例如--test1的default应设为"1"而非1)。help参数用于提供当前参数的描述,在命令行使用--help时将显示此内容。
3、分析获取的外部参数。返回的是一个命名空间对象,类似于字典,但通过属性访问而非键索引来获取对应参数的值。
4、以获取属性的方式获取外部参数。
需要注意的是,外部参数的定义必须写在获取外部参数之前。也就是说,parser.add_argument()要写在parser.parse_args()之前,否则外部参数无法被命令行捕获。另外,如果代码中没有parser.parse_args(),命令行就不能传参。
用命令行执行以上代码,命令与输出如下(以上代码保存为test.py):

可以看出,故意以数字和字符串的方式分别对字符串和float类型的外部参数赋值,函数都能正确地转换并正确地参与运算。
使用默认值时输出如下:

注意事项
2 注意事项
通过以上的实验,argparse库似乎能将外部参数正确转换为各种类型,只要能转换。下面来实验是否能传入一个numpy数组。代码如下:
import numpy as np
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--array', type=np.array, default=np.array([1,2]))
args = parser.parse_args()
print(args)
array = args.array
print(type(array))
print(array)
print(array + 1)
当使用默认值时:

运行正确,但当我们意图传入外部参数时:

尽管传入的[1,2]被转换为numpy.ndarray类型,它却并不能参与运算。所以,并不是所有的类型都能在命令行中传入的。
以上就是Python命令行参数定义及需要注意的地方的详细内容,更多关于Python命令行参数的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









