小编eid*_*orb的帖子

Python argparse:nargs ='?' 和可选参数

假设我有一个简单的程序readfile.py,通过使用Python来支持命令行参数argparse.

程序从位置参数指定的文件中读取input.没有指定其他参数,这个程序不是很令人兴奋.它只是读取input和退出.可选参数--output [OUTPUT_FILE]表示应将输入文件写入文件.OUTPUT_FILE也是可选的.如果未指定,则应写入输入default.out.

我设置了我的参数解析器,如下所示:

parser = argparse.ArgumentParser(description='Read from a file')
parser.add_argument(
    'input',
    help='file to read from')
parser.add_argument(
    '--output',
    nargs='?',
    const='default.out',
    default=None,
    help="""write file to %(metavar)s. If %(metavar)s isn't
         specified, write file to %(const)s.""",
    metavar='OUTPUT_FILE')
args = parser.parse_args()
return args.file, args.output_file
Run Code Online (Sandbox Code Playgroud)

注意我使用default=None如果--ouput没有出现在命令行上,我可以用None检测它的缺席.

这给出了这样的用法签名:

usage: readfile.py [-h] [--output [OUTPUT_FILE]] input
Run Code Online (Sandbox Code Playgroud)

如果我运行,它会按预期处理参数

python readfile.py input.in --output somefile.out
Run Code Online (Sandbox Code Playgroud)

要么

python readfile.py --output somefile.out input …
Run Code Online (Sandbox Code Playgroud)

python argparse

3
推荐指数
1
解决办法
9619
查看次数

标签 统计

argparse ×1

python ×1