AMD|Python语言命令行参数解析接收参数执行脚本的三种方法

AMD|Python语言命令行参数解析接收参数执行脚本的三种方法

在Windows系统上 , Python脚本文件当然双击就能直接运行 。 不过我们往往需要在执行脚本的时候还要添加相应的参数 , 另外在Ubuntu系统中 , 我们执行文件往往和其他系统或用户命令一样 , 需要在终端中输入 , 参数当然也要一并加上 。 所以机智客这里说的意思是 , 执行Python脚本(.py文件)时候需要输入相应参数 , 这样程序怎么写的方法 。

上面这么说可能有点不明不白的 , 或者有朋友会用但未必知道命令行解析这种表达方式 。 举个例子 , 比如我们在执行一个脚本文件的时候 , 可能会在CMD或者终端中输入python demo.py 10或者python demo.py --separator 10后面这个数字就是参数 。 我们要编写这样的脚本或者函数 , 有哪些方法呢?这里列举三种常用的 。
一个是用系统模块sys 。 引入模块语句是import sys 。 也就是Python语言的内置库中的sys.argv 。 argv通常有argv[0
, argv[1
, argv[2
这样几个参数 。 基本使用方法是m_sil_len = int(sys.argv[1
)传入第一个参数 , sil_th = int(sys.argv[2
)传入第二个参数 。 如果是简单一点的参数或者脚本 , 我们引入了sys 。 可以直接用这个传入参数 。
一种是用模块argparse来实现 , 这是标准库中推荐的命令行解析模块 。 引入模块语句是import argparse 。 基本使用方法是引入模块后 , 先parser = argparse.ArgumentParser()创建对象 , 然后调用方法添加参数parser.add_argument(\"jzk\" help=\"这是关于参数的说明\" type=int) , 之后args = parser.parse_args()使用解析就可以用了 。 机智客看到这个方法在很多项目脚本中使用 。 我们在阅读机器学习AI之类的开源项目 , 就会发现很多人用的都是这个方法 。
【AMD|Python语言命令行参数解析接收参数执行脚本的三种方法】还有一个就是用fire模块 , 用于生成命令行界面的工具 。 引入模块语言是import fire 。 它默认以-为参数分隔符的 。 基本使用方法是fire.Fire() 。 这个不仅可以做命令行的参数解析 , 还可以还给一个类class添加命令行 。 所以使用时候括号里填入函数名或者类名即可 , 也就是里面的参数可以是其他Python对象 。