资讯专栏INFORMATION COLUMN

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

89542767 / 903人阅读

  在平时的撰写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)>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)>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)>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)>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

       

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129064.html

相关文章

  • Python查询参数4方法详细说明

      在平时的撰写Python脚本制作的过程当中,我们通常需要根据查询参数传到某些自变量基本参数,使新项目应用更加灵便便捷。本文列举了搭建Python查询参数的4种普遍方法,所需要的可以了解一下小伙伴们好,在平时的撰写Python脚本制作的过程当中,我们通常需要根据查询参数传到某些自变量基本参数,使新项目应用更加灵便便捷  本文我们将列举出搭建Python查询参数的4种普遍方法  分别是:  内嵌s...

    89542767 评论0 收藏0
  • JDBC干货篇一

    摘要:干货篇一基础的全称是,即数据库连接,它是一种可以执行语句的。将光标移动到上一行,如果超过结果集的范围则返回。列索引从开始,意味着行中的第一列是,第二列是,以此类推。 JDBC干货篇一 JDBC基础 JDBC的全称是Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API。程序可通过JDBC API连接到关系数据库,并使用...

    hiyang 评论0 收藏0
  • Python3网络爬虫实战---29、解析库使用:BeautifulSoup

    摘要:解析器在解析的时候实际上是依赖于解析器的,它除了支持标准库中的解析器,还支持一些第三方的解析器比如,下面我们对支持的解析器及它们的一些优缺点做一个简单的对比。 上一篇文章:Python3网络爬虫实战---28、解析库的使用:XPath下一篇文章:Python3网络爬虫实战---30、解析库的使用:PyQuery 前面我们介绍了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就...

    MockingBird 评论0 收藏0
  • 自制小工具大大加速MySQL SQL语句优化(附源码)

    摘要:如果语句中使用了子查询集合操作临时表等情况,会给列带来很大的复杂性。会递归执行这些子查询,把结果放在临时表里。查询优化器从中所选择使用的索引。该字段显示了查询优化器通过系统收集的统计信息估算出来的结果集记录条数。 引言 优化SQL,是DBA常见的工作之一。如何高效、快速地优化一条语句,是每个DBA经常要面对的一个问题。在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤。然...

    zhunjiee 评论0 收藏0
  • 自制小工具大大加速MySQL SQL语句优化(附源码)

    摘要:如果语句中使用了子查询集合操作临时表等情况,会给列带来很大的复杂性。会递归执行这些子查询,把结果放在临时表里。查询优化器从中所选择使用的索引。该字段显示了查询优化器通过系统收集的统计信息估算出来的结果集记录条数。 引言 优化SQL,是DBA常见的工作之一。如何高效、快速地优化一条语句,是每个DBA经常要面对的一个问题。在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤。然...

    Hujiawei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<