argparse
模块可以让人轻松编写用户友好的命令行接口。
- 创建parser对象
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
- 添加参数
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
- 解析参数
args = parser.parse_args()
ArgumentParser 对象
常用参数
- prog
程序的名称(默认:sys.argv[0] 即文件名)
parser = argparse.ArgumentParser(prog='myprogram')
%(prog)s
格式串表示 sys.argv[0] 或 prog= 参数确定的程序名称的引用。
- description
对这个程序的描述
parser = argparse.ArgumentParser(description='A foo that bars')
- epilog
一些程序喜欢在 description 参数后显示额外的对程序的描述
parser = argparse.ArgumentParser(
description='A foo that bars',
epilog="And that's how you'd foo a bar")
add_argument() 方法
添加一个参数,定义这个命令行参数应当如何解析。
- name or flags
第一个传递给add_argument()
的参数必须是一系列 flags 或者是一个简单的参数名。
parser.add_argument('-f', '--foo')
而位置参数可以这么创建:
parser.add_argument('bar')
当 parse_args()
被调用,选项会以 -
前缀识别,剩下的参数则会被假定为位置参数
- action
ArgumentParser
对象将命令行参数与动作相关联。
parser.add_argument('--version', action='version', version='%(prog)s 2.0')
- default
默认值为 None,指定了在命令行参数未出现时应当使用的值。
parser.add_argument('--foo', default=42)
- type
默认情况下,解析器会将命令行参数当作简单字符串读入。 然而,命令行字符串经常应当被解读为其他类型。
普通内置类型和函数可被用作类型转换器:
import argparse
import pathlib
parser = argparse.ArgumentParser()
parser.add_argument('count', type=int)
parser.add_argument('distance', type=float)
parser.add_argument('street', type=ascii)
parser.add_argument('code_point', type=ord)
parser.add_argument('source_file', type=open)
parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1'))
parser.add_argument('datapath', type=pathlib.Path)
用户自定义的函数也可以被使用:
>>> def hyphenated(string):
... return '-'.join([word[:4] for word in string.casefold().split()])
...
>>> parser = argparse.ArgumentParser()
>>> _ = parser.add_argument('short_title', type=hyphenated)
>>> parser.parse_args(['"The Tale of Two Cities"'])
Namespace(short_title='"the-tale-of-two-citi')
- required
是否是必须参数
parser.add_argument('--foo', required=True)
- help
help 值是一个包含参数简短描述的字符串。
parser.add_argument('--foo', action='store_true',
help='foo the bars before frobbling')
网友评论