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以环状形式组合排列图片并输出的方法
Mar 17 Python
python实现简单的socket server实例
Apr 29 Python
Python爬虫抓取手机APP的传输数据
Jan 22 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
python psutil库安装教程
Mar 19 Python
Python3多线程基础知识点
Feb 19 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
关于Python解包知识点总结
May 05 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
python3爬虫中异步协程的用法
Jul 10 Python
Python测试框架:pytest学习笔记
Oct 20 Python
pytorch锁死在dataloader(训练时卡死)
May 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开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
JS敏感词过滤代码
2016/12/23 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python中字符编码简介、方法及使用建议
2015/01/08 Python
用Python实现协同过滤的教程
2015/04/08 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
Python中几个比较常见的名词解释
2015/07/04 Python
python Django框架实现自定义表单提交
2016/03/25 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
Python列表解析操作实例总结
2020/02/26 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
公司面试感谢信
2014/02/01 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
介绍信格式样本
2015/05/05 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书