【复用代码】Python接收命令行参数:argparse模块

本文介绍了如何使用Python的argparse模块解析命令行参数,并展示了如何创建和复用参数解析函数。通过示例代码,解释了如何定义必选和可选参数,以及如何将命名空间对象转换为字典。此外,还提供了一个用于检查参数的函数,确保输入文件为.doc或.docx格式。
摘要由CSDN通过智能技术生成

概述

以前简单探索过命令接收模块,地址 Python接收命令行参数的3种方法

准备写软件,看了 SQLMap lib/parse/cmdline.py 接收命令的代码如下,看了 argparse中文官方文档,先简单探探路。

def cmdLineParser(argv=None):
    """
    This function parses the command line parameters and arguments
    """

    if not argv:
        argv = sys.argv

    checkSystemEncoding()

    # Reference: https://stackoverflow.com/a/4012683 (Note: previously used "...sys.getfilesystemencoding() or UNICODE_ENCODING")
    _ = getUnicode(os.path.basename(argv[0]), encoding=sys.stdin.encoding)

    usage = "%s%s [options]" % ("%s " % os.path.basename(sys.executable) if not IS_WIN else "", "\"%s\"" % _ if " " in _ else _)
    parser = ArgumentParser(usage=usage)

    try:
        parser.add_argument("--hh", dest="advancedHelp", action="store_true",
            help="Show advanced help message and exit")

        parser.add_argument("--version", dest="showVersion", action="store_true",
            help="Show program's version number and exit")

        parser.add_argument("-v", dest="verbose", type=int,
            help="Verbosity level: 0-6 (default %d)" % defaults.verbose)

参数说明

参考:argparse中文官方文档

命名空间对象

使用 vars()函数 返回对象object的属性和属性值的字典对象。

args = parser.parse_args()  # 获取参数对象
print(args)					# Namespace(file='x', showVersion=False)
param_dict = vars(args)		# 把命名空间对象转换成字典对象
复用函数

定义了一个接收命令行参数的函数,对输出的提示信息进行了解耦。

def check_params(param_list):
    # 自定义打印信息
    type = param_dict['file'][param_dict['file'].find(".") + 1:]
    if type != "doc" or type != "docx":
        print(u"程序中断: 请输入.dox或.docx文件")
        exit(1)

    if param_dict['showVersion']:
        print(u"版本:1.0 只接收 -f 和 -v 两个参数,对整个word文档添加漏洞描述、危害、证明、加固等信息")


def shell_accept():
    '''
    预定义命令行参数,接收并存储
    必须参数:file
    可选参数:
    -f / --file
    -v / --version
    @return:返回获取到的命令行参数args,以数据字典格式
    '''
    try:    # 异常处理
        parser = argparse.ArgumentParser(description="传入命令参数")
        parser.add_argument("-f", "--file", type=str, help="待处理的word文档", required=True)

        parser.add_argument("-v", "--version", dest="showVersion", action="store_true",
                            help="工具版本号")

        args = parser.parse_args()  # 获取命名空间对象
        param_dict = vars(args)     # 把命名空间对象转换成字典对象
        check_params(param_dict)
        
        return param_dict
    except Exception as e:
        print(e)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值