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):
可以看出,故意以数字和字符串的方式分别对字符串和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类型,它却并不能参与运算。所以,并不是所有的类型都能在命令行中传入的。
来源:https://www.cnblogs.com/qizhou/p/14060316.html?utm_source=tuicool&utm_medium=referral


猜你喜欢
- MySql Server安装步骤如下所示:1安装MySql Server2 安装MySqlServer管理工具解压中文语言包,将文件复制到安
- 1比如python提倡简单实用的思想,它就没有switch语句,如果要实现switch语句的效果 的话可以通过2个方法来写把 (1)通过if
- 最近在优化公司框架 trpc 时发现了一个热重启相关的问题,优化之余也总结沉淀下,对 go 如何实现热重启这方面的内容做一个简单的梳理。1.
- script中。let data={....};let url=xx;方法各异:GET:this.$ajax.get(url,{  
- 一、find_element_by_id()find_element_by_id()1.从上面定位到的元素属性中,可以看到有个id属性:id
- SQL查询某字段的值为空sql中字段的默认有NULL和另一种空白的形式如何取查询这两种存在的记录呢?空白值查询:SELECT * FROM
- 想通过编写Python代码来打开本地的.mp4格式文件,使用os模块来操作文件。我的电脑默认的是QQ影音播放器,执行Python代码打开默认
- 前言Python用于处理文本数据绝对是个利器,极为简单的读取、分割、过滤、转换支持,使得开发者不需要考虑繁杂的流文件处理过程(相对于JAVA
- 本文实例为大家分享了Python smtplib发送邮件功能的具体代码,供大家参考,具体内容如下解决之前版本的问题,下面为最新版#!/usr
- 本文实例讲述了Python实现简单拆分PDF文件的方法。分享给大家供大家参考。具体如下:依赖pyPdf处理PDF文件切分pdf文件使用方法:
- 使用命令:os.system('python file_name.py')解释:os.system是执行当前的系统命令1、拿
- 本文实例为大家分享了python实现定时发送邮件的具体代码,供大家参考,具体内容如下一、发送邮件import smtplib from em
- 导语hello everyone! I'm kimiko!Miss me???嘿!中秋结束了,开始正式营业给大家继续送福
- 1.从官网下载mysql-5.7.21-windowx64.zip mysql下载页面2.解压到合适的位置(E:\mysql) 这名字是我改
- 使用Python的第三方库pyautogui,PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘
- 目录GitHub 消息的问题解决方案代码实现0.环境准备1、模拟登录github2.模拟进入Inbox3.检查僵尸项目4.取消关注僵尸项目5
- 一、前言今天要介绍的 click 则是用一种你很熟知的方式来玩转命令行。命令行程序本质上是定义参数和处理参数,而处理参数的逻辑一定是与所定义
- Python中内置了一些与时间处理相关的库,如time、datatime和calendar库。其中time库是Python中处理时间的标准库
- 掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费。1、使用局部变量尽量使用局部变量代替全局变量:便于维护,提高性能并
- 通常人们使用以下两种方法来执行SQL语句: Set Rs=Conn.Execute(SqlStr) 和&nbs