时间:2021-05-23
在命令行中运行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是外部参数的默认值。如果命令行不对外部参数赋值而使用默认值,函数不会对你定义的默认值进行type上的转换,所以default最好直接定义为type指定的类型(比如--test1的default定义为"1"而不是1)。help传入对当前外部参数的描述,命令行中使用--help输出的就是这个。
3、分析获取的外部参数。传出的是一个命名空间,类似于字典,但使用属性的方式而不是key索引来获取命名对应的外部参数值。
4、以获取属性的方式获取外部参数。
需要注意的是,外部参数的定义必须写在获取外部参数之前。也就是说,parser.add_argument()要写在parser.parse_args()之前,否则外部参数无法被命令行捕获。另外,如果代码中没有parser.parse_args(),命令行就不能传参。
用命令行执行以上代码,命令与输出如下(以上代码保存为test.py):
可以看出,故意以数字和字符串的方式分别对字符串和float类型的外部参数赋值,函数都能正确地转换并正确地参与运算。
使用默认值时输出如下:
2注意事项
通过以上的实验,argparse库似乎能将外部参数正确转换为各种类型,只要能转换。下面来实验是否能传入一个numpy数组。代码如下:
import numpy as npimport argparse parser = argparse.ArgumentParser() parser.add_argument('--array', type=np.array, default=np.array([1,2])) args = parser.parse_args() print(args) array = args.arrayprint(type(array))print(array)print(array + 1)当使用默认值时:
运行正确,但当我们意图传入外部参数时:
尽管传入的[1,2]被转换为numpy.ndarray类型,它却并不能参与运算。所以,并不是所有的类型都能在命令行中传入的。
以上就是Python命令行参数定义及需要注意的地方的详细内容,更多关于Python命令行参数的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本篇将介绍python中sys,getopt模块处理命令行参数如果想对python脚本传参数,python中对应的argc,argv(c语言的命令行参数)是什么
外部直接执行python文件时,我们有时需要获得命令行的参数获得命令行参数的两种方式1、通过sys.argvsys.argv:获得一个参数列表,第一个值为文件名
argparse是python标准库里面用来处理命令行参数的库命令行参数分为位置参数和选项参数:位置参数就是程序根据该参数出现的位置来确定的如:[root@op
什么是命令行参数?命令行参数是在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。并非所有程序都有命令行参数,因为并非所有程序都需要它们。
sys.argv是python用来获取命令行参数的,如在CMD下执行python*.pydata,也就是使用python执行脚本时,需要添加的参数按照Pytho