1. 用argparse模块解析命令行选项
Python命令行程序做为其中一种,其传参中也包括了 位置参数(positional arguments) 和 可选参数(optional arguments) :
(注意,可选参数的选项名称以 --
或 -
打头,位置参数和可选参数的先后顺序可以任意排布)
那么在Python程序中我们如何解析在命令行中提供的各种选项呢?(选项保存在 sys.argv
中)我们可以使用 argparse
模块。我们用下面这个 search.py
程序做例子:
1.1 创建parser对象
首先我们需要创建 parser
对象:
import argparse
parser = argparse.ArgumentParser(description="search some files")
1.2 添加选项声明
然后使用 parser.add_argument()
方法添加想要支持的选项声明。 add_argument()
的调用参数承担了不同的功能:
dest
指定了用来保存解析结果的属性名称。metavar
用于显示帮助信息,如果不指定则默认为大写的属性名。action
指定了与参数处理相关的行为(store
表示存储单个值,append
表示将多个值存到一个列表中)。
我们尝试依次添加如下选项声明进行测试:
解析位置参数
parser.add_argument(dest="filenames", metavar="filename", nargs="*")
该参数为位置参数,不需要像可选参数的选项一样用 -
或 --
打头。位置参数一般是必须要提供的(虽然这里你不提供也能保存为 []
)。 nargs="*"
表示将所有额外命令行参数保存在一个列表中。
解析可选参数
parser.add_argument("-p", "--pat", metavar="pattern", required=True, dest="patterns", action="append", help="text pattern to search for")
-p