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中mechanize库的简单使用示例
Jan 10 Python
在Python的Flask框架中实现单元测试的教程
Apr 20 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
Django中的forms组件实例详解
Nov 08 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Django框架视图函数设计示例
Jul 29 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
django中ImageField的使用详解
Dec 21 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP7 标准库修改
2021/03/09 PHP
判断用户是否在线的代码
2011/03/05 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Python制作刷网页流量工具
2017/04/23 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python笔记之代理模式
2019/11/20 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
工作自荐信
2013/12/11 职场文书
学校后勤人员职责
2013/12/27 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
施工安全标语
2014/06/07 职场文书
售房协议书
2014/08/19 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
python实现Nao机器人的单目测距
2021/09/04 Python