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

作者:颀周 时间:2022-09-16 02:34:39 

在命令行中运行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):

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

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

使用默认值时输出如下:

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

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)

当使用默认值时:

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

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

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

尽管传入的[1,2]被转换为numpy.ndarray类型,它却并不能参与运算。所以,并不是所有的类型都能在命令行中传入的。

来源:https://www.cnblogs.com/qizhou/p/14060316.html?utm_source=tuicool&utm_medium=referral

标签:python,命令行,参数
0
投稿

猜你喜欢

  • Python实现复杂对象转JSON的方法示例

    2021-11-14 09:55:47
  • python 绘制拟合曲线并加指定点标识的实现

    2023-07-25 20:29:51
  • asp select下拉菜单选择图标并实时显示

    2011-04-03 10:33:00
  • 如何用python反转图片,视频

    2023-08-27 08:18:21
  • python+selenium行为链登录12306(滑动验证码滑块)

    2023-01-16 16:08:01
  • ASP应用:用stream读文件

    2007-09-24 13:33:00
  • 最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)

    2024-01-18 15:11:02
  • python使用正则表达式匹配反斜杠\\遇到的问题

    2021-12-19 19:45:05
  • python代码检查工具pylint 让你的python更规范

    2021-07-03 12:06:38
  • Python读取Pickle文件信息并计算与当前时间间隔的方法分析

    2023-11-17 20:18:13
  • mysql5.7.20第一次登录失败的快速解决方法

    2024-01-19 16:57:36
  • MYSQL数据库常用命令集合

    2009-02-26 16:01:00
  • Python tkinter 列表框Listbox属性详情

    2023-09-16 14:06:26
  • Python文件操作的方法

    2022-10-27 19:54:29
  • 对python实时得到鼠标位置的示例讲解

    2022-02-21 10:01:25
  • ExpiresAbsolute 属性

    2008-05-05 12:49:00
  • Mysql删除数据以及数据表的方法实例

    2024-01-22 19:53:04
  • sql server 获取系统时间的方法

    2023-07-17 07:05:36
  • python数据结构之二叉树的统计与转换实例

    2023-08-11 07:35:48
  • python初学之用户登录的实现过程(实例讲解)

    2023-03-16 17:27:37
  • asp之家 网络编程 m.aspxhome.com