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 相关文章推荐
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
Python这样操作能存储100多万行的xlsx文件
Apr 16 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python新手学习函数默认参数设置
Jun 03 Python
python的launcher用法知识点总结
Aug 07 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
Python加密技术之RSA加密解密的实现
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中执行系统外部命令
2006/10/09 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
python 算法 排序实现快速排序
2012/06/05 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
酒店服务与管理毕业生求职信
2013/11/02 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
实习协议书
2015/01/27 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
总结Java对象被序列化的两种方法
2021/06/30 Java/Android