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和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
python3.7简单的爬虫实例详解
Jul 08 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
pytorch多GPU并行运算的实现
Sep 27 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
如何解决安装python3.6.1失败
Jul 01 Python
Django Paginator分页器的使用示例
Jun 23 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 多维数组排序(usort,uasort)
2010/06/30 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
PHP微商城开源代码实例
2019/03/27 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
使用JS动态显示文本
2017/09/09 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python实现银行管理系统
2019/10/25 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python 面向对象部分知识点小结
2020/03/09 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
Python截图并保存的具体实例
2021/01/14 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
国培远程培训感言
2014/03/08 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
大学生工作求职信
2014/06/23 职场文书
建筑安全责任书范本
2014/07/24 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
大学学生会辞职信
2015/05/13 职场文书
童年读书笔记
2015/06/26 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
企业管理不到位检讨书
2019/06/27 职场文书