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的设计模式编程入门指南
Apr 02 Python
python使用urllib2提交http post请求的方法
May 26 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
总结Python编程中函数的使用要点
Mar 20 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
Python 一句话生成字母表的方法
Jan 02 Python
Python Django 前后端分离 API的方法
Aug 28 Python
pycharm全局搜索的具体步骤
Jul 28 Python
Python3合并两个有序数组代码实例
Aug 11 Python
python字符串拼接+和join的区别详解
Dec 03 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源代码数组统计count分析
2011/08/02 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
python版本单链表实现代码
2018/09/28 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python文字转语音实现过程解析
2019/11/12 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
文明家庭先进事迹材料
2014/05/14 职场文书
政审证明材料
2015/06/19 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
详解Python中的进程和线程
2021/06/23 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫