python解析命令行参数的三种方法详解


Posted in Python onNovember 29, 2019

这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

python解析命令行参数主要有三种方法:sys.argv、argparse解析、getopt解析

方法一:sys.argv —— 命令行执行:python test_命令行传参.py 1,2,3 1000

# test_命令行传参.py
import sys 
def para_input():  
  print(len(sys.argv))   # 参数序列的长度,此时所有参数存放在一个list之中
  if len(sys.argv) < 2:    
    sys.exit("python error")  
  script_name = sys.argv[0] #第一个参数指的是脚本名称
  param_first = sys.argv[1] #第二个参数,此时也是一个str列表
  param_second = sys.argv[2] #第三个参数 
   
  print(script_name)
  print(type(script_name))
  print(param_first)
  print(type(param_first))
  
  sss = param_first.split(',')
  print(type(sss))
  print(sss[0])  #传进来的都是默认str
  print(sss[1])
  print(sss[2])
  
  print(param_second)
  print(type(param_second))
  print(script_name, param_first, param_second) 
if __name__ == "__main__":
  para_input()

python解析命令行参数的三种方法详解

方法二:argparse解析 —— 命令行执行:python test_命令行传参.py -n Peter 或者 python test_命令行传参.py -n Peter -d 20191120

# test_命令行传参.py
import argparse

parser = argparse.ArgumentParser('传入参数:***.py')
parser.add_argument('-n','--name', default='Jack')
parser.add_argument('-d','--date', default='20191128')
args = parser.parse_args()
print(args)
print(type(args))
name_ = args.name
date_ = args.date

print(type(name_))
print(type(date_))
print('the people %s said that the date is %s'%(name_, date_))

python解析命令行参数的三种方法详解

方法三:getopt解析 —— 命令行执行:python test_命令行传参.py -f 游泳 -p 20191130 或者 python test_命令行传参.py --functionname=游泳 -p 20191130 或者 python test_命令行传参.py --functionname=游泳 --partdate=20191130

格式为:getopt.getopt(argv, options[, long_options])

该方法有两种传参形式:短 ('-') 和长 ('--')

options表示的是短选项,传入时需用(例如 :-f )形式传入参数,其中,有冒号(:) 表示 -f 之后必须传入值构成(例如:-f value),没有冒号则不用。

[, long_options]表示的是长选项,传入时需用(例如 :--f )形式传入参数,其中,有等于号(=) 表示 --f 之后必须传入值构成(例如:--f=value),没有等于号则不用。

使用时可以长短混合,比如多个参数,有的用长选项,有的用短选项;在程序中设置默认值之后,还可以不用传全部参数

import getopt
import sys

def get_args_func(argv):
  functionname = '拍照' #默认值
  partdate = '20191128'
  
  try:
    opts, args = getopt.getopt(argv, "hf:p:", ["help", "functionname=", "partdate="]) 

 #表示参数选项有:-h, -f, -p, --help, --functionname, --partdate,它们相互对应;该方法的返回值有两个元素: 第一个是(opt, value)元组的列表,第二个是一般参数列表,包含那些没有 '-' 或 '--' 的参数
  except getopt.GetoptError:
    print('Error: ***.py -f <functionname> -p <partdate>')
    print('  or: ***.py --functionname=<functionname> --partdate=<partdate>')
    sys.exit(2)
  
  for opt, arg in opts:  #依次获取列表中的元组项
    if opt in ("-h", "--help"):
      print('***.py -f <functionname> -p <partdate>')
      print('or: ***.py --functionname=<functionname> --partdate=<partdate>')
      sys.exit()
    elif opt in ("-f", "--functionname"):
      functionname = arg
    elif opt in ("-p", "--partdate"):
      partdate = arg
  print('-----------------------------------------------------------------------')
  print(opts) #元组构成的列表
  print(args) #args指的是不用 '-'或 '--'传递的参数,这里没有传递,所以为空
  print('functionname为:', functionname)
  print('partdate为:', partdate)

if __name__ == '__main__':
  get_args_func(sys.argv[1:]) #因为sys.argv[0]是脚本名称

python解析命令行参数的三种方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python编写屏幕截图程序方法
Feb 18 Python
Django中的ajax请求
Oct 19 Python
python实现简易动态时钟
Nov 19 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
python tornado使用流生成图片的例子
Nov 18 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
Python学习开发之图形用户界面详解
Aug 23 Python
关于numpy中eye和identity的区别详解
Nov 29 #Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 #Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 #Python
python jenkins 打包构建代码的示例代码
Nov 29 #Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 #Python
python中从for循环延申到推导式的具体使用
Nov 29 #Python
python 实现矩阵按对角线打印
Nov 29 #Python
You might like
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
java必学必会之static关键字
2015/12/03 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
Python3基础之条件与循环控制实例解析
2014/08/13 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
详解爬虫被封的问题
2019/04/23 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
python数组循环处理方法
2019/08/26 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python实现拼图小游戏
2020/02/22 Python
上班离岗检讨书
2014/01/27 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
小学生优秀评语
2014/12/29 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
python在package下继续嵌套一个package
2022/04/14 Python
Java 异步任务计算FutureTask
2022/04/28 Java/Android