Python|如何解析命令行选项
在本文中,我们将讨论如何编写Python程序来解析命令行上提供的选项(位于sys.argv中)。 argparse 模块可用于解析命令行选项。
代码 #1:使用 argparse 模块
'''
Hypothetical command-line tool for searching a
collection of files for one or more text patterns.
'''
import argparse
parser = argparse.ArgumentParser(description ='Search some files')
parser.add_argument(dest ='filenames', metavar ='filename', nargs ='*')
parser.add_argument('-p', '--pat', metavar ='pattern',
required = True, dest ='patterns',
action ='append',
help ='text pattern to search for')
parser.add_argument('-v', dest ='verbose',
action ='store_true', help ='verbose mode')
parser.add_argument('-o', dest ='outfile',
action ='store', help ='output file')
parser.add_argument('--speed', dest ='speed',
action ='store', choices = {'slow', 'fast'},
default ='slow', help ='search speed')
args = parser.parse_args()
上面提到的程序定义了一个命令行解析器,其用法如下:
bash % python3 search.py -h
usage: search.py [-h] [-p pattern] [-v] [-o OUTFILE]
[--speed {slow, fast}] [filename [filename ...]]
Search some files
positional arguments:
filename
optional arguments:
-h, --help show this help message and exit
-p pattern, --pat pattern
text pattern to search for
-v verbose mode
-o OUTFILE output file
--speed {slow, fast} search speed
观察 print() 语句的输出。
代码:以下会话显示了数据在程序中的显示方式。
bash % python3 search.py foo.txt bar.txt
usage: search.py [-h] -p pattern [-v] [-o OUTFILE]
[--speed {fast, slow}] [filename [filename ...]]
search.py: error: the following arguments are required: -p/--pat
bash % python3 search.py -v -p spam --pat = eggs
foo.txt bar.txt
filenames = ['foo.txt', 'bar.txt']
patterns = ['spam', 'eggs']
verbose = True
outfile = None
speed = slow
bash % python3 search.py -v -p spam --pat = eggs
foo.txt bar.txt -o results
filenames = ['foo.txt', 'bar.txt']
patterns = ['spam', 'eggs']
verbose = True
outfile = results
speed = slow
bash % python3 search.py -v -p spam --pat = eggs
foo.txt bar.txt -o results \--speed = fast
filenames = ['foo.txt', 'bar.txt']
patterns = ['spam', 'eggs']
verbose = True
outfile = results
speed = fast
- argparse模块是标准库中最大的模块之一,具有大量的配置选项。上面的代码显示了一个基本的子集,可以使用和扩展以开始使用。
- 要解析选项,首先创建一个ArgumentParser实例并使用add_argument () 方法为要支持它的选项添加声明。
- 在每个 add_argument() 调用中,dest 参数指定将放置解析结果的属性的名称。
- 生成帮助消息时使用metavar参数。
- action 参数指定与参数关联的处理,并且通常存储用于存储值或附加用于将多个参数值收集到列表中。
代码:参数将所有额外的命令行参数收集到一个列表中。它被用来制作文件名列表
parser.add_argument(dest = 'filenames',
metavar = 'filename', nargs = '*')
代码:参数根据是否提供参数设置布尔标志
parser.add_argument('-v', dest = 'verbose',
action = 'store_true',
help = 'verbose mode')
代码:参数采用单个值并将其存储为字符串
parser.add_argument('-o', dest = 'outfile',
action = 'store', help = 'output file')
以下参数规范允许参数重复多次,并且所有值都附加到列表中。 required 标志意味着必须至少提供一次参数。
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。