Python命令行参数解析

Python命令行解析是指读取终端传入的参数

sys.argv属性

这个是sys库立面的一个属性,其用于接收传入程序的命令行参数。它是一个列表。也就是差不多下面这种类型

sqlmap.py -u http://www.baidu.com

那么sys.argv的值就是如下

['sqlmap.py','-u','http://www.baidu.com']

它的第一个参数是文件的路径。多个参数的话需要用空格隔开。一般sys.argv需要配合optparse模块使用。

可以通过以下代码试试,sys.argv的输出

import sys
argsa = sys.argv
print(argsa)

注意需要在终端里面输入

optparse模块

optparse,是一个更够让程序设计人员轻松设计出简单明了、易于使用、符合标准的Unix命令例程式的Python模块。生成使用方法和帮助信息。简单来说它是一个用于处理sys.argv传进来的信息的模块。比如我们经常运行脚本时,会查看帮助信息就用用到--help,那么这个就是由此模块处理的。

下面通过例子先来初步了解:

from optparse import OptionParser #optparse里面最主要的类就是OptionParser了optParser = OptionParser() #创建一个对象optParser.add_option('-f','--file',action = 'store',type = "string" ,dest = 'filename')optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='hello',help="make lots of noise [default]")
#上面的就是最主要的操作,差不多是定义参数的信息 -v是参数简写 --vsion是全写 两种名字都是同一个东西fakeArgs = ['-f','file.txt','-v','how are you', 'arg1', 'arg2']
#这个fakeArgs是模拟sys.argvoption , args = optParser.parse_args()
#上面这里没有传入任何参数是为了更好的演示op , ar = optParser.parse_args(fakeArgs)
#这里传入了fakeArgs,其操作和上面的是一样的
#这里的op会返回一个类似字典的自定义类型option中的dest变量,而值则是我们自己传进去的print("option : ",option)
print("args : ",args)
print("op : ",op)
print("ar : ",ar)

最后程序输出的结果如下

option :  {'filename': None, 'verbose': 'hello'}
args :  []
op :  {'filename': 'file.txt', 'verbose': False}#这里的verbose之所以是False于action参数有关
ar :  ['how are you', 'arg1', 'arg2']

add_option()函数里面参数的具体说明

add_option()参数说明:
action:存储方式,分为三种store、store_false、store_truetype:类型dest:存储的变量default:默认值help:帮助信息

action不同值得说明:

   --store 上表示命令行参数的值保存在options对象中。例如上面一段代码,如果我们对optParser.parse_args()函数传入的参数列表中带有‘-f’,那么就会将列表中‘-f’的下一个元素作为其dest的实参filename的值,他们两个参数形成一个字典中的一个元素{filename:file_txt}。相反当我们的参数列表中没有‘-f’这个元素时,那么filename的值就会为空。--store_false fakeArgs 中存在'-v'verbose将会返回False,而不是‘how are you’,也就是说verbose的值与'-v'的后一位无关,只与‘-v’存在不存在有关。--store_ture  这与action="store_false"类似,只有其中有参数'-v'存在,则verbose的值为True,如果'-v'不存在,那么verbose的值为None。

参考于CSDN

默认的一个option -h

除了自定义的,在命令行输入-h--help会自动整合所有选项的help及名称显示出来。如果添加一个usage的字符串也能把usage显示出来,例如:

import sys
from optparse import OptionParserif __name__ == '__main__':args = sys.argv[1:]#读取除文件地址外得参数usage = "This is test!" #使用方法字符串optParser = OptionParser(usage) #创建一个对象 并把usage传进去optParser.add_option('-f','--file',type = "string",dest = 'filename',help="请输入文件路径")optParser.add_option("-u","--url", dest="url",default='http://www.baidu.com',help="请输入目标网址")optParser.add_option("-t","--test", dest="test",action="store_true",help="测试是否存在")#添加规则option , args = optParser.parse_args(args)#开始执行规则pass

最后结果如图所示

完整的一个命令行传参示例

import sys
from optparse import OptionParserif __name__ == '__main__':args = sys.argv[1:]#读取除文件地址外得参数optParser = OptionParser() #创建一个对象optParser.add_option('-f','--file',type = "string",dest = 'filename',help="请输入文件路径")optParser.add_option("-u","--url", dest="url",default='http://www.baidu.com',help="请输入目标网址")optParser.add_option("-t","--test", dest="test",action="store_true",help="测试是否存在",default='False')#添加规则option , args = optParser.parse_args(args)#开始执行规则print("-f传入了参数",option.filename) #注意option不是字典print("-u传入了参数",option.url)print("-t的状态为",option.test)print("args多余的东西有",args)pass

测试的命令行

 python test.py -f "/flag" -t "hi" abcsdsd

输出结果:

-f传入了参数 /flag
-u传入了参数 http://www.baidu.com
-t的状态为 True
args多余的东西有 ['hi', 'abcsdsd']

Python命令行参数解析相关推荐

  1. python命令行参数解析OptionParser类用法实例

    python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下:     from opt ...

  2. Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  3. Python命令行参数解析模块------argparse

      首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...

  4. argparse模块_Argparse:一个具体案例教会你python命令行参数解析

    问题描述: 现有一个用于数据格式转换的py脚本(多转一),执行时通过命令行传入一系列的参数控制其具体运行方式,使满足以下要求: 1. 必须传入需要处理的原始数据文件名 2. 可以指定输入文件的格式,若 ...

  5. python 命令行参数-Python 命令行参数解析

    Python用于编写脚本的场景非常多,如何处理脚本(命令行)的参数当然非常关键 首先导入sys,参数列表在sys.arg中 import sys if __name__ == '__main__': ...

  6. python getopt使用_Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  7. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  8. python 命令行参数-Python 中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要一个命令行参数解析的 ...

  9. python 参数_python脚本命令行参数解析

    前言 在python命令行参数的解析模块中,我们常用的就是sys内置模块,但该模块的功能过于原始单一,很多具体的逻辑功能还得靠我们自己手动实现,实在较为麻烦.在这里向大家推荐一个好用的参数解析的模块a ...

最新文章

  1. 同步服务老是报错_SQL2005的维护计划做异地备份,采用另一台服务器设置共享文件夹的方式同步。但是一直报错,本地备份可以...
  2. 程序员必备的七大面向对象设计原则(三)
  3. VS2008和VS2012怎么进行Debug模式和Release模式的切换
  4. 《R语言编程艺术》——2.5 使用all()和any()
  5. 使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建
  6. 高性能mysql 第六章_第六章 查询性能优化
  7. 前端学习(1159):对象结构02
  8. python数值计算速度_提高python数值计算速度
  9. 0130 - 构建业务的能力
  10. 中国现代远程与继续教育网 统考 大学英语(B)考试大纲
  11. MySQL error(2006) server has gone away
  12. html返回顶部函数,网页中返回顶部代码(多种方法)另附注释说明
  13. java实现pdf转图片
  14. DDR的ZQ校准信号-翻译
  15. OPNET入门2-Basic Process
  16. HyperLynx(十二)BoardSim和PCB板级仿真分析(三)
  17. 知乎上的48条神回复
  18. arcgis 栅格计算器(Spatial Analyst/Raster Calculator)
  19. Cisco IP Phone 7960/7940 SCCP firmware 转换成SIP firmware过程
  20. java性能优化总结_35 个 Java 代码性能优化总结(一)

热门文章

  1. reflow repaint
  2. iOS与导航栏有关的神技
  3. 普歌-码灵团队-java中的equals方法和toString方法及总结
  4. debian虚拟机调分辨率
  5. 假期怎么玩,知道这几样轻松玩遍各地
  6. OpenCV中flip函数实现
  7. SSD网桥实现wifi,network扩展功能
  8. 计算机主机缩写,“HIC”是“Host Interface Computer”的缩写,意思是“主机接口计算机”...
  9. 一文解决IDEA中文乱码问题
  10. 深入分析微信小程序带来的机遇