python 解析命令行参数demo(argparse命令解析模块)
文章目录一、sys.argv二、 python 解析命令行参数optparse(已过时,不推荐使用)基本用法三、python argparse 用法总结argparse使用demo查看学习sqlmap相关代码一、sys.argvPython解析命令行读取参数有两种方式:sys.argv和argparse如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次
文章目录
一、sys.argv
Python解析命令行读取参数有两种方式:sys.argv和argparse
如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。
import sys
print(“输入的参数为:%s” % sys.argv[1])
命令行执行效果:
python demo.py 1
输入的参数为:1
二、 python 解析命令行参数optparse(已过时,不推荐使用)
Python 有两个内建的模块用于处理命令行参数:
一个是 getopt只能简单处理 命令行参数;
另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明。会自动帮你负责-h帮助选项。
基本用法
首先你必须导入该类,并创建一个OptionParser对象,然后再使用parser.add_option(…)待定义命令行参数
optparse模块OptionParser
三、python argparse 用法总结
【推荐】Python-argparse命令解析模块详解与代码展示
参考URL: https://blog.csdn.net/lady_killer9/article/details/115470174
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。
argparse使用demo
【推荐】Python-argparse命令解析模块详解与代码展示
参考URL: https://blog.csdn.net/lady_killer9/article/details/115470174
import argparse # 导入模板
parser = argparse.ArgumentParser() # 创建parser
parser.add_argument() # 添加参数
args = parser.parse_args() # 参数解析
demo
"""
-*- coding:utf-8 -*-
@File: learnarg.py
@Author:frank yu
@DateTime: 2021.04.06 20:45
@Contact: frankyu112058@gmail.com
@Description:
"""
import argparse
from itertools import permutations
parser = argparse.ArgumentParser(description='a demo to learn argparse by lady_killer.')
# ----------------------- 位置参数 -----------------------
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
# --------选项参数,一个选项一个值(存在为sum函数,不存在为max函数)----------------
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
# -------------------- 一个选项多个值,放到列表 ---------------------
parser.add_argument("-per", "--per", dest='permutations', default=[], nargs='+', help="permutations of the integers")
# ------------------ 选项必须存在,required参数 ---------------------
parser.add_argument("-min", "--mini", dest="min", default=[], nargs='+', required=True, help="minimum of the "
"integers,must exist")
# -------------------- 参数在范围内,choices参数 --------------------
parser.add_argument("-num", "--number", dest="num", type=int, default=1, choices=[x for x in range(10)],
help="a integer,0<=num<=9")
# -------------------- 参数组 --------------------
v_group = parser.add_argument_group("v_group", "about version and verose")
v_group.add_argument("--version", action='store_true', dest="show_version", help="show the version")
v_group.add_argument("-v", dest="verbose", default=1, type=int, choices=[1, 2, 3, 4], help="show more information, 1~4")
csdn = parser.add_mutually_exclusive_group(required=True)
csdn.add_argument("--like", action='store_true', dest="like", help="love csdn")
csdn.add_argument("--hate", action='store_true', dest="hate", help="hate csdn")
# ------------- 解析参数 -----------------------
args = parser.parse_args()
# -------------- 解析结果查看 --------------------
# print(dir(args))
print(args.__dict__)
# ------------- 位置参数显示 --------------------
print("位置参数:", args.integers)
# ------------ 选项参数 显示 --------------------
print("选项参数使用:", args.accumulate(args.integers))
# ----------- 选项参数,一个参数多个值 ----------
print("一个选项多个值:", [x for x in permutations(args.permutations)])
# ------------------ 必填选项 --------------
print("必填选项,最小值:", min(args.min))
# ------------ 范围限制选项 ---------------
print("范围限制选项,参数值:", args.num)
# ------------- 参数组 -------------------
if args.show_version:
print("v1.0")
if args.verbose > 1:
print("you will get more information")
# ----------- 互斥参数组 ------------------
if args.like:
print("I like CSDN")
if args.hate:
print("I hate CSDN")
查看学习sqlmap相关代码
源码路径:lib/parse/cmdline.py
它在try优先导入了optparse ,并重名了相关方法和argparse 的方法一样,如果导入 optparse 失败,就直接使用了 argparse。这样做的好处,代码兼容性吧,缺失optparse 的情况下,代码还可以运行。
try:
from optparse import OptionError as ArgumentError
from optparse import OptionGroup
from optparse import OptionParser as ArgumentParser
from optparse import SUPPRESS_HELP as SUPPRESS
ArgumentParser.add_argument = ArgumentParser.add_option
def _add_argument_group(self, *args, **kwargs):
return self.add_option_group(OptionGroup(self, *args, **kwargs))
ArgumentParser.add_argument_group = _add_argument_group
def _add_argument(self, *args, **kwargs):
return self.add_option(*args, **kwargs)
OptionGroup.add_argument = _add_argument
except ImportError:
from argparse import ArgumentParser
from argparse import ArgumentError
from argparse import SUPPRESS
...
不推荐这么玩了,直接用argparse即可。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)