Logo

Python命令行运行脚本时传入参数的方式

photo

2023年04月06日

Python命令行运行脚本时传入参数的两种方式

1、python script.py 0,1,2 3
2、python script.py –a=0,1,2 –b=3
对应不同的参数解析方式,分别为sys.argv, argparse
(1) sys.argv :sys模块是很常用的模块, 它封装了与python解释器相关的数据
  • sys.argv 是命令行参数列表
  • len(sys.argv) 是命令行参数个数
  • sys.argv[0] 表示脚本名。
使用sys.argv接收上面第一个命令中包含的参数方式如下:
import sys
a = sys.argv[1]
b = sys.argv[2]
print(a, type(a))
print(b, type(b))
执行 python test.py 0,1,2 10结果:
0,1,2 <class 'str'>
3 <class 'str'>
(2)argparse:argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,可以让用户轻松编写友好的命令行接口
使用的三个步骤:
1、创建一个解析器:即创建ArgumentParser()对象
2、添加参数:即调用add_argument()方法添加参数,格式及主要属性
  ArgumentParser.add_argument(name or flags…[, action][, default][, type])
  • name or flags: 一个命名或者一个选项字符串的列表,例如 foo(命名:位置参数)或 -f, –foo(旗标flag:可以在命令行里任意位置指定,前者一般为后者的缩略形式(比如查看某些库的版本时既可以使用 x -v 也可以使用 x -—version))
  • type :命令行参数应当被转换成的类型(type参数理论上可以是任何合法的类型, 但有些参数传入格式比较麻烦,例如list,所以一般使用bool, int, str, float这些基本类型就行了,更复杂的需求可以通过str传入,然后手动解析。bool类型的解析比较特殊,传入任何值都会被解析成True,传入空值时才为False)
  • action:当参数在命令行中出现时使用的动作基本类型(默认值action = ‘store’,代表存储参数的值)
  • default :当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值
3、解析参数:即使用parse_args()解析添加的参数
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("loc", type=str)
parser.add_argument('loc2', type=str, default="5555")
parser.add_argument('--b', type=int, default=0)
parser.add_argument('-n', "--number", type=str, help='输入一个数字')  --此时n是number的缩写,参数会存在number中,而不是n中
args = parser.parse_args()

print(args.loc, type(args.loc))
print(args.loc2, type(args.loc2))
print(args.b, type(args.b))
print(args.number, type(args.number))

执行python test.py  --b=1 --number=2 3 5
3 <class 'str'>
5 <class 'str'>
1 <class 'int'>
2 <class 'str'>
从上述结果可知位置参数从上述结果可知是由命令行参数的顺序决定的,而参数–b,–number在命令行中何处指定都可以。

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

热门文章

EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先...EWS(ExchangeService)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 作者:Pastore Antonio
1593 浏览量
Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1588 浏览量
SQL Server AG集群启动不起来的临时自救大招 背景前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群...SQLServerAG集群启动不起来的临时自救大招 作者:Pastore Antonio
1578 浏览量
SharePoint2010升级到SharePoint2013操作手册 SharePoint2010升级到SharePoint2013操作手册目录第一章...SharePoint2010升级到SharePoint2013操作手册 作者:Pastore Antonio
1565 浏览量
C# DataTable 某一列求和 列为数字类型doubletotal=Convert.ToDouble(datatable.Com...C#DataTable某一列求和 作者:Pastore Antonio
1559 浏览量