# Python查询参数标准化的4种方法详细说明

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-06T03:42:00.000Z
> 分类: 其他
> 标签: AI, 数据库, Python
> 原文链接: http://117.50.162.249:3000/yun/articles/1816

---

# Python查询参数标准化的4种方法详细说明

> 来源: https://www.ucloud.cn/yun/129064.html
> 作者: 89542767
> 发布日期: 发布于2023-01-06 11:42

在平时的撰写Python脚本制作的过程当中，我们通常需要根据查询参数传到某些自变量主要参数，使新项目应用更加灵便便捷。本文列举了搭建Python查询参数的4种普遍方法，所需要的可以了解一下

　　小伙伴们好，在平时的撰写Python脚本制作的过程当中，我们通常需要根据查询参数传到某些自变量主要参数，使新项目应用更加灵便便捷

　　本文我们将列举出搭建Python查询参数的4种普遍方法

　　分别是：

　　内嵌sys.argv控制模块

　　内嵌argparse控制模块

　　内嵌getopt模块

　　第三方平台依赖库click

　　1.sys.argv

　　搭建查询参数非常简单、普遍的方法是运用内嵌的「sys.argv」控制模块

　　它是把主要参数以一种规范有序目录传到，因而在使用过程中传参次序务必固定不动

　　因而，这种方法适用主要参数数量少且情景固定工程中

```
　　import sys
　　if __name__=='__main__':
　　#获取参数列表
　　#注意：sys.argv[0]代表第一个参数，即：脚本名称「1_sys.argv.py」
　　#其他参数列表
　　args=sys.argv[1:]
　　#参数个数
　　args_length=len(sys.argv)if sys.argv else 0
　　print("排除运行主文件参数，其他参数列表为:",args)
　　print("参数总数：",args_length)
　　#应用
　　#python31_sys.argv.pyarg1arg2
　　#清除运作主文件主要参数，别的参数列表为:[arg1,arg1]
　　#主要参数数量：3
```

　　需注意，在脚本制作中以「sys.argv」获得的参数列表中，第一位主要参数意味着脚本制作主文件目录

　　2.argparse

　　内嵌的argparse控制模块能够比较轻松地编写出友好argv脚本制作，而且它会一键生成协助操作手册，在客户给程序流程传到失效主要参数时可以抛出去清楚的错误报告

　　官方文档

　　使用这些搭建argv包括3个阶段：

　　搭建主要参数分析对象添加主要参数加上主要参数分析主要参数

　　1.搭建argv分析总体目标

```
　　importargparse
　　...
　　#建立一个argv分析总体目标
　　parser=argparse.ArgumentParser(description='argv')
　　...
```

　　2.加上argv

　　务必注意的是，--arg1用以特定主要参数名字，-a1意味着dest总体目标变量类型（缩写）

```
　　...
　　#设定3个主要参数
　　#主要参数1：arg1，浮点型，非必要调用方法
　　#主要参数2：arg2，字符串数组，非必要调用方法，包括初始值「xag」
　　#主要参数3：arg3，字符串类型，务必传到的主要参数
　　parser.add_argument('--arg1','-a1',type=int,help='主要参数1，非必要主要参数')
　　parser.add_argument('--arg2','-a2',type=str,help='主要参数2，非必要主要参数,包括初始值',default='xag')
　　parser.add_argument('--arg3','-a3',type=str,help='主要参数3，务必主要参数',required=True)
　　...
```

　　3.分析出变量值

```
　　...
　　#分析主要参数,获得每一个argv（Namespace），随后变为词典
　　args=vars(parser.parse_args())
　　#获得全部主要参数
　　print("全部argv为:")
　　forkeyinargs:
　　print(f"argv名:{key}，变量值:{args[key]}")
　　...
　　使用时，大家就可以用「-h/--help」指令主要参数查询帮助文件
　　#查询argv帮助文件
　　python32_argparse.py--help
　　#或
　　python32_argparse.py-h
　　上边使用的3个主要参数，参数arg1、arg2非必要传值，arg3务必传值，此外参数arg2特定了初始值
　　#参数arg3务必，参数arg1和参数arg2非必要，在其中参数arg2设置权限初始值
　　#调用方法arg3
　　#python32_argparse.py--arg3123
　　#python32_argparse.py-a3123
　　xingag xingagdeMacBook-Proargs%python32_argparse.py-a3123
　　全部argv为:
　　argv名:arg1，变量值:None
　　argv名:arg2，变量值:xag
　　argv名:arg3，变量值:123
　　#调用方法arg1、arg3
　　xingag xingagdeMacBook-Proargs%python32_argparse.py-a1111-a3123
　　全部argv为:
　　argv名:arg1，变量值:111
　　argv名:arg2，变量值:xag
　　argv名:arg3，变量值:123
　　#调用方法arg1、arg2、arg3
　　xingag xingagdeMacBook-Proargs%python32_argparse.py-a1111-a2222-a3123
　　全部argv为:
　　argv名:arg1，变量值:111
　　argv名:arg2，变量值:222
　　argv名:arg3，变量值:123
```

　　3.getopt

　　getopt是Python中的内嵌标准模块，需要结合sys.argv控制模块，立即分析脚本运行时主要参数

　　应用文件格式：getopt(args,shortopts,longopts=[])

　　其中

　　args

　　参数列表，可以通过sys.argv获取，可以参考上面

　　shortopts短参数组成的字符串

　　定义短参数，如果参数有值，需要在短参数后追加一个「:」符号

　　传参使用方式：-n 23

　　longopts长参数列表

　　定义长参数列表时，如果某个参数有值，需要在短参数后追加一个「=」符号

　　传参使用方式：–port 8080

　　这里以传入数据库连接参数为例（参数包含ip、用户名、密码、数据库名称）进行讲解

```
　　from getopt import getopt
　　import sys
　　#获取参数
　　#sys.argv[1:]：获取除脚本文件名外的所有命令行参数
　　#opts：存有所有选项及其输入值的元组列表
　　#args：去除有用的输入以后剩余的部分
　　opts,args=getopt(sys.argv[1:],'i:u:p:d:',['ip=','user=','pwd=','db='])
　　#获取参数值
　　#短参数
　　#python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb
　　#长参数
　　#python3 4_getopt.py--ip 127.0.0.1-u root-p 123456-d mysqldb
　　ip_pre=[item[1]for item in opts if item[0]in('-i','--ip')]
　　ip=ip_pre[0]if len(ip_pre)&gt;0 else None
　　print("参数ip：",ip)
　　user_pre=[item[1]for item in opts if item[0]in('-u','--user')]
　　user=user_pre[0]if len(user_pre)&gt;0 else None
　　print("参数user：",user)
　　pwd_pre=[item[1]for item in opts if item[0]in('-p','--pwd')]
　　pwd=pwd_pre[0]if len(pwd_pre)&gt;0 else None
　　print("参数pwd：",pwd)
　　db_pre=[item[1]for item in opts if item[0]in('-d','--db')]
　　db=db_pre[0]if len(db_pre)&gt;0 else None
　　print("参数db：",db)
　　在运行脚本时，我们可以利用「短参数」或「长参数」形式进行传递
　　#测试
　　#短参数
　　python3 4_getopt.py-i 127.0.0.1-u root-p 123456-d mysqldb
　　#长参数
　　python3 4_getopt.py--ip 127.0.0.1--user root--pwd 123456--db mysqldb
```

　　4.click

　　click作为第三方依赖库，它为命令行工具封装了大量的方法，可以非常方便实现命令行参数

　　项目地址

　　首先，我们需要安装依赖库click

```
　　import click
　　#安装依赖
　　#pip3 install-U click
　　click.command()
　　click.option('--arg1',default='111',help='参数arg1，默认值为「111」')
　　click.option('--arg2',type=int,help='参数arg2')
　　click.option('--arg3',type=str,help='参数arg3')
　　def start(arg1,arg2,arg3):
　　"""
　　基于参数arg1、参数arg2、参数arg3运行项目
　　:param arg1:
　　:param arg2:
　　:param arg3:
　　:return:
　　"""
　　print("参数arg1值为:",arg1)
　　print("参数arg2值为:",arg2)
　　print("参数arg3值为:",arg3)
　　if __name__=='__main__':
　　start()
```

　　然后，在主运行函数上通过装饰器配置参数即可

　　比如，上面就定义了3个命令行参数arg1、arg2、arg3，并设置了参数的类型及默认值

　　最后，在运行脚本时只需要按参数设定传递对应的值即可

```
　　#不包含参数
　　xingag xingagdeMacBook-Pro args%python3 3_click.py
　　参数arg1值为:111
　　参数arg2值为:None
　　参数arg3值为:None
　　#包含参数arg1
　　xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1
　　参数arg1值为:test1
　　参数arg2值为:None
　　参数arg3值为:None
　　#包含参数arg1、arg2
　　#注意：arg2的参数类型为整形，传入的参数必须能转为整形，否则会报错
　　xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222
　　参数arg1值为:test1
　　参数arg2值为:222
　　参数arg3值为:None
　　#包含参数arg1、arg2、arg3
　　xingag xingagdeMacBook-Pro args%python3 3_click.py--arg1 test1--arg2 222--arg3 test3
　　参数arg1值为:test1
　　参数arg2值为:222
　　参数arg3值为:test3
```

　　最终

　　上边根据案例介绍了完成Pythonargv比较常见的4种方法

　　对于部分简易自购并且不那样正规情景，个人感觉可以选择用sys.argv控制模块迅速搭建argv；但对某些主要参数多、以用户为中心的宣布工作环境，提议运用argparse控制模块或click依靠来建立argv

      综上所述，这篇文章就给大家介绍到这里了，希望可以给大家带来帮助。