资讯专栏INFORMATION COLUMN

搭建Pythonargv的4种比较常见方式方法

89542767 / 403人阅读

  此篇文章主要是阐述了搭建Pythonargv的4种比较常见方式方法,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,务必的朋友可以学习一下。


  序言


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


  分别是:


  内嵌sys.argv控制模块


  内嵌argparse控制模块


  内嵌getopt模块


  第三方平台依赖库click


  1.sys.argv
  搭建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)
  #使用
  #python3 1_sys.argv.py arg1 arg2
  #排除运行主文件参数,其他参数列表为:[arg1,arg1]
  #参数总数:3


  需要注意的是,在脚本中通过「sys.argv」获取的参数列表中,第一个参数代表脚本主文件名称


  2.argparse


  内置的argparse模块可以非常轻松地编写出友好的命令行参数脚本,并且它能自动生成帮助使用手册,在用户给程序传入无效参数时能抛出清晰的错误信息


  官方文档:


  使用它构建命令行参数包含3个步骤


  构建参数解析对象添加参数添加参数解析参数


  构建命令行参数解析对象


  import argparse
  ...
  #构建一个命令行参数解析对象
  parser=argparse.ArgumentParser(description='命令行参数')
  ...
  添加命令行参数:
  需要指出的是,--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)
  ...
  解析出参数值:
  ...
  #解析参数,获取所有的命令行参数(Namespace),然后转为字典
  args=vars(parser.parse_args())
  #获取所有参数
  print("所有命令行参数为:")
  for key in args:
  print(f"命令行参数名:{key},参数值:{args[key]}")
  ...
  使用的时候,我们就可以通过「-h/--help」命令参数查看帮助文档
  #查看命令行参数帮助文档
  python3 2_argparse.py--help
  #或
  python3 2_argparse.py-h
  上面添加的3个参数,参数arg1、arg2非必须传值,arg3必须传值,另外参数arg2指定了默认值
  #参数arg3必须,参数arg1和参数arg2非必须,其中参数arg2设置了默认值
  #传入参数arg3
  #python3 2_argparse.py--arg3 123
  #python3 2_argparse.py-a3 123
  xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a3 123
  所有命令行参数为:
  命令行参数名:arg1,参数值:None
  命令行参数名:arg2,参数值:xag
  命令行参数名:arg3,参数值:123
  #传入参数arg1、arg3
  xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a1 111-a3 123
  所有命令行参数为:
  命令行参数名:arg1,参数值:111
  命令行参数名:arg2,参数值:xag
  命令行参数名:arg3,参数值:123
  #传入参数arg1、arg2、arg3
  xingag xingagdeMacBook-Pro args%python3 2_argparse.py-a1 111-a2 222-a3 123
  所有命令行参数为:
  命令行参数名:arg1,参数值:111
  命令行参数名:arg2,参数值:222
  命令行参数名:arg3,参数值:123

  3.getopt


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


  使用格式:getopt(args,shortopts,longopts=[])


  其中


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


  shortopts短主要参数组成的字符串:定义短主要参数,如果主要参数有值,需要在短主要参数后追加一个「:」符号


  传参使用方式:-n23


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


  传参使用方式:–port8080


  这里以传入数据库连接主要参数为例(主要参数包含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


  到这里这篇文章有关搭建Pythonargv的4种普遍模式的文章内容就介绍到这了

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

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

相关文章

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

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

    89542767 评论0 收藏0
  • 常见https,SSH协议和MD5加密方式分析

    摘要:前言协议和加密是前端可能会接触到的加密所以我就将他们进行了一个归纳原理就是在加入层是安全的基础协议是在基础上加了协议使用端口是端口由网景公司开发并内置在浏览器中作用建立一个信息安全通道来保证数据传输的安全确认网站的真实性可以查看网站认证的真 前言 https,SSH协议和MD5加密是前端可能会接触到的加密,所以我就将他们进行了一个归纳. 1.https 1.1原理 A.就是在http加...

    3fuyu 评论0 收藏0
  • 常见https,SSH协议和MD5加密方式分析

    摘要:前言协议和加密是前端可能会接触到的加密所以我就将他们进行了一个归纳原理就是在加入层是安全的基础协议是在基础上加了协议使用端口是端口由网景公司开发并内置在浏览器中作用建立一个信息安全通道来保证数据传输的安全确认网站的真实性可以查看网站认证的真 前言 https,SSH协议和MD5加密是前端可能会接触到的加密,所以我就将他们进行了一个归纳. 1.https 1.1原理 A.就是在http加...

    Alfred 评论0 收藏0
  • 如何使用 Bootstrap 搭建更合理 HTML 结构

    摘要:本文的目的就是介绍如何使用搭建常用的布局,并保证布局具有合理的结构。所以,上面例子的正确结构如下这是我工作过程中见过的最多的一种错误,必须格外注意。 showImg(http://images2017.cnblogs.com/blog/999445/201802/999445-20180212224801781-748317715.jpg); 前言 Bootstrap 的成功不仅在于其...

    gclove 评论0 收藏0

发表评论

0条评论

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