Python命令行参数定义及需要注意的地方

 更新时间:2020年11月30日 16:44:57   作者:颀周  
这篇文章主要介绍了Python命令行参数定义及需要注意的地方,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下

  在命令行中运行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 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命令行参数的资料请关注脚本之家其它相关文章!

相关文章

  • Python全局变量与global关键字常见错误解决方案

    Python全局变量与global关键字常见错误解决方案

    这篇文章主要介绍了Python全局变量与global关键字常见错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python matplotlib实现散点图的绘制

    Python matplotlib实现散点图的绘制

    Matplotlib作为Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。本文将利用Matplotlib库绘制散点图,感兴趣的可以了解一下
    2022-03-03
  • django开发post接口简单案例,获取参数值的方法

    django开发post接口简单案例,获取参数值的方法

    今天小编就为大家分享一篇django开发post接口简单案例,获取参数值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • TensorFLow 变量命名空间实例

    TensorFLow 变量命名空间实例

    今天小编就为大家分享一篇TensorFLow 变量命名空间实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python操作mysql数据库实现增删查改功能的方法

    Python操作mysql数据库实现增删查改功能的方法

    这篇文章主要介绍了Python操作mysql数据库实现增删查改功能的方法,涉及Python针对mysql数据库的连接、增删改查等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • pandas中的数据去重处理的实现方法

    pandas中的数据去重处理的实现方法

    这篇文章主要介绍了pandas中的数据去重处理的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python使用import导入本地脚本及导入模块的技巧总结

    Python使用import导入本地脚本及导入模块的技巧总结

    这篇文章主要介绍了Python使用import导入本地脚本及导入模块的技巧,结合实例形式总结分析了Python使用import导入本地脚本及导入模块的使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Python守护进程和脚本单例运行详解

    Python守护进程和脚本单例运行详解

    本篇文章主要介绍了Python守护进程和脚本单例运行,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • python跳出双层循环的方法

    python跳出双层循环的方法

    本文主要介绍了python跳出双层循环的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • python opencv将多个图放在一个窗口的实例详解

    python opencv将多个图放在一个窗口的实例详解

    这篇文章主要介绍了python opencv将多个图放在一个窗口,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02

最新评论