python 传入命令行参数 argparse


有的时候自己用python写个工具想通过命令行传递参数,虽然有sys.argv可以用,但是参数类型多种多样,sys.argv是无法满足我们的需求的。有些参数是必须的,有些参数不是必须的,甚至有的时候还想写个help帮助自己和大家了解每个参数的作用,因此掌握一个通用的传参方法是非常重要的。argparse就可以满足我们所有需求啦,真的超级好用啊!
argparse的使用方法:

import argparse

#创建一个parser解析器
parser = argparse.ArgumentParser(description="process some packets")
#添加参数
parser.add_argument("pcap",help="a pcap file from wireshark or tcpdump")
parser.add_argument("filter",default=None,help="a rule to filter packets such as 'udp'")
#解析参数
args = parser.parse_args()
#使用参数
print(args.pcap)
print(args.filter)

下面了解一下创建解析器函数ArgumentParser的参数吧,以后方便使用:
lass argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)

prog - 程序名称 (default: sys.argv[0])
usage - 一个字符串用来描述如何使用程序 (default: generated from arguments added to parser)
description - 一个文本,在参数help前显示 (default: none)
epilog - 一个文本,在参数help后显示 (default: none)
parents - A list of ArgumentParser objects whose arguments should also be included
formatter_class - A class for customizing the help output
prefix_chars - The set of characters that prefix optional arguments (default: ‘-‘)
fromfile_prefix_chars - The set of characters that prefix files from which additional arguments should be read (default: None)
argument_default - 参数的全局默认设置 (default: None)
conflict_handler - The strategy for resolving conflicting optionals (usually unnecessary)
add_help - Add a -h/--help option to the parser (default: True)
allow_abbrev - Allows long options to be abbreviated if the abbreviation is unambiguous. (default: True)

note:上面参数经常使用的就是 usage、description、epilog。其中usage是自动生成的,description与epilog是对参数进行补充的。

下面介绍用来添加参数的函数add_argumentparser。add_argument()定义了每个参数该如何被解析,它的参数包括:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

name or flags - 参数选项的名称或列表, e.g. foo or -f, --foo.
action - 在命令行中遇到此参数时要采取的基本操作类型.
nargs - 该从命令行中读取参数的数量.
const - 某些操作和nargs选择所需要的常量.
default - 若参数不在命令行里的时候,使用的默认值.
type - 应将命令行参数转换为的类型,例如integer.
choices - 一个 container,参数的允许值.
required - 是否可以省略命令行选项.
help - 简单描述一下这个参数的作用.
metavar - 在usage描述中,这个参数的名称.
dest - 要添加到parse_args()返回的对象中的属性的名称.

note:可参数起名字的时候,可选参数使用 - 或 -- 作为前缀例如 -f --foo
而必须的参数没有前缀,例如 foo。

下面再说说解析参数的函数parse_args,它主要有两个参数
parse_args(args=None, namespace=None)
args - parse_args除了可以使用命令行进行参数传递,也可以使用args通过函数参数传递。
namespace - 一个用来获取属性的对象(unknown)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章