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 相关文章推荐
wxPython中listbox用法实例详解
Jun 01 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
python查看模块安装位置的方法
Oct 16 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
python3中for循环踩过的坑记录
Dec 14 Python
python Timer 类使用介绍
Dec 28 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树的代码,可以嵌套任意层
2006/10/09 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python简易版图书管理系统
2019/08/12 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
大学本科毕业生的自我鉴定
2013/11/26 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
业务部经理岗位职责
2014/01/04 职场文书
大学运动会入场词
2014/02/22 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
节约用水演讲稿
2014/05/21 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
关键在于落实心得体会
2014/09/03 职场文书
叶问观后感
2015/06/15 职场文书