python args参数_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

注意,我使用default=None,这样如果--ouput没有出现在命令行中,我就可以在没有出现的情况下检测到它的缺失。

它给出了这样的用法签名:usage: readfile.py [-h] [--output [OUTPUT_FILE]] input

如果我运行python readfile.py input.in --output somefile.out

或者python readfile.py --output somefile.out input

如果我运行python readfile.py input.in --output

但如果我跑python readfile.py --output input.in

它抱怨争论太少。我认为argparse足够“聪明”来解释这个模式,将input设置为input.in,将output设置为default.out。生成的用法甚至表明了这一点。

我遗漏了什么吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值