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

橙子主题打折出售

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

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

热门文章

Windows Server IIS+ARR反向代理(配置反向代理服务器) 1.概念说明:反向代理反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相...WindowsServerIIS+ARR反向代理(配置反向代理服务器) 作者:Pastore Antonio
1581 浏览量
ffmpeg 生成水印 1:先要配置ffmpeg的滤镜:参考:https://www.jianshu.com/p/9d24...ffmpeg生成水印 作者:Pastore Antonio
1508 浏览量
C#中List的FindAll方法的正确打开方式 初略的介绍一种常见的List写法,这种写法在3.0以后其实是很简单的,但是在2.0左右的系统运用中还...C#中List的FindAll方法的正确打开方式 作者:Pastore Antonio
1467 浏览量
IntelliJ IDEA 代码字体大小的快捷键设置放大缩小(很实用)(图文详解) 这是在设置IntelliJIDEA...IntelliJIDEA代码字体大小的快捷键设置放大缩小(很实用)(图文详解) 作者:Pastore Antonio
1461 浏览量
Navicat Premium 12.0.22 安装与破解 一、安装  NavicatPremium12.0.22的下载链接:https://pan.ba...NavicatPremium12.0.22安装与破解 作者:Pastore Antonio
1447 浏览量