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在命令行中何处指定都可以。

橙子主题打折出售

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

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

热门文章

修复群晖Synology Drive client右键菜单缺失问题 本教程主要解决windows10右键菜单中没有SynologyDrive菜单的问题,整体思路是找到...修复群晖SynologyDriveclient右键菜单缺失问题 作者:Pastore Antonio
1973 浏览量
docker如何查看一个镜像内部的目录结构及其内部都有哪些文件 前言:有时候我们会在docker上下载一个镜像,或者是上传一个镜像到docker上,甚至有时候就是在...docker如何查看一个镜像内部的目录结构及其内部都有哪些文件 作者:Pastore Antonio
1918 浏览量
Adobe Acrobat Pro 激活 这里记录了一些AdobeAcrobat的激活教程和组件。浏览量:1,799 作者:Pastore Antonio
1642 浏览量
追寻日出,找回自己 为什么我要去追寻日出?其实我是一个很懒的人,每次都起不来,直到有一次我在租房中睡到了大天亮,阳光照...追寻日出,找回自己 作者:Pastore Antonio
1606 浏览量
Swagger2 接口多级分组方法 swagger无疑是Java开发的最佳伴侣,接口非常方便调试;当然也有用Postman,因人而异吧...Swagger2接口多级分组方法 作者:Pastore Antonio
1522 浏览量