- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果没有argparse.REMAINDER
,可选参数可以位于位置参数之前或之后:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a')
parser.add_argument('b')
print(parser.parse_args('-a 1 2'.split())) # Namespace(a='1', b='2')
print(parser.parse_args('2 -a 1'.split())) # Namespace(a='1', b='2')
但是对于argparse.REMAINDER
,可选参数必须位于前面:
parser.add_argument('c', nargs=argparse.REMAINDER)
print(parser.parse_args('-a 1 2 3'.split())) # Namespace(a='1', b='2', c=['3'])
print(parser.parse_args('2 -a 1 3'.split())) # Namespace(a=None, b='2', c=['-a', '1', '3'])
使用 argparse.REMAINDER
时如何正确解析最后一行?
最佳答案
要添加到 kabanus 的答案中,了解一些有关如何解析参数的信息可能会有所帮助。
它迭代参数,首先查找位置,然后是可选,然后是位置,...,
在位置步骤中,它会尝试使用 nargs
作为主要因素来匹配尽可能多的内容。默认值是一个字符串(你的“b”); '*' 将匹配下一个可选值(-a
);但 REMAINDER 会忽略该约束并匹配到末尾。因此,“位置”评估是贪婪的,而带有 REMAINDER 的评估尤其贪婪。
所以在'2 -a 1 3'
情况下,开头的'2'可以匹配'b',其余的可以匹配'c'。只需一次“位置”评估即可消耗整个列表,包括“-a”,然后就完成了。
文档示例显示了这一点:
>>> print(parser.parse_args('--foo B cmd --arg1 XX ZZ'.split()))
Namespace(args=['--arg1', 'XX', 'ZZ'], command='cmd', foo='B')
“--foo”被视为可选,但“--arg1”是 REMAINDER 的一部分。 “args”紧接在“command”之后填充。
如果您想保留对何时使用 REMAINDER 的控制,请将其设为可选 add_argument('-c',nargs='...')
。否则你就会受到这个位置/可选循环的支配。
顺便说一句,子解析器是用 narg=argarse.PARSER
实现的,它是“+...”的名称。它类似于 REMAINDER,但至少需要一个字符串(子解析器名称)。它也会消耗其路径上的一切。
您可能希望使用“*”并使用“--”来触发“消耗其他所有内容”操作,而不是 REMAINDER。
关于python - argparse.REMAINDER 改变位置参数的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280715/
在 python3 中,整数除法的工作方式与 python 2.7.3 不同。有没有办法保证除法后没有余数的数返回为int,而除法后有余数的数返回为float? 我希望能够检查: if (instan
我正在编写一个不使用小数的计算器(仅支持有理数),但我希望能够计算平方根的版本。 当平方根函数被按下(例如)数字 12 时,我想简化/“减少”平方根并返回 2*sqrt(3) - 将其转换为 (2*2
如果没有argparse.REMAINDER,可选参数可以位于位置参数之前或之后: import argparse parser = argparse.ArgumentParser() parser.
每次尝试访问 Django 模板中的列表时,我都会收到此错误。我已经检查了类似问题的答案,但问题通常是缺少 % 或某个地方的其他字符。据我所知,情况并非如此: 这里我传递一个字典,其中包含作为键的项目
如文档所示: argparse.REMAINDER. All the remaining command-line arguments are gathered into a list. This i
我有这个功能: bool interpolate(const Mat &im, float ofsx, float ofsy, float a11, float a12, float a21, flo
public class Ex14_11 { public static void main(String[] args){ long b = Long.MAX_VALUE; BigI
我有一个可扩展的菜单,它从一个细长的左侧栏中弹出(打开菜单和关闭菜单类型) 大多数情况下,它会占用大约 50px,打开时除外,大约 250。 我希望我的#content div 占剩余部分的 100%
我想实现一个 arg 解析器,它允许我将单元测试作为子命令之一运行,盲目地将参数传递给 unittest.main()。例如, $ foo.py unittest [args to pass to u
我一直在尝试解决 Project Euler 上的第 5 个问题 2520 is the smallest number that can be divided by each of the numb
friend 说“mod”和“remainder”有区别。 如果是这样,那么 C 和 C++ 的区别是什么? “%”在 C 语言中是指“mod”还是“rem”? 最佳答案 模数和余数是有区别的。例如:
我正在做一个更改返回程序,这个看似无法解决的问题真的很令人沮丧。 我正在使用 BigDecimal,所以我可以处理精确的结果,但是我的九个 BigDecimal.remainder() 方法中有两个返
我观看了构建 Countdown 应用程序的 JavaScript 教程。对于JS,我们在下面写了这段代码。但我不明白为什么我们需要取余数 % 然后除以更大的单位?有人可以解释一下吗?这部分我特别不明
有没有一种快速的方法让我知道(快速拒绝)一个二进制数除以另一个数时的余数是否为 0?我不想执行整个部门。例如,将 1001 0110 1011 1110 除以 11011。不需要进位。 这是一个网络项
我的理解是余数类型是依赖类型(依赖于取模)。我阅读了有关 DataKinds 扩展的信息,并能够像下面这样定义它: {-# LANGUAGE DataKinds, TypeFamilies, Type
假设我想要两列。右边的是200px宽,左边的正好占了剩下的宽度。这可能吗?左栏的宽度应该设置多少? 最佳答案 更新:使用 Flexbox 解决 现在我们有 Flexbox (使用 over 95% s
let num = 32.0 Double(num).remainder(dividingBy: 12.0) 我得到 -4?..而不是 8.0...它是从 8.0 中减去 12.0 我该如何解决这个问
当我执行HTML代码时,会出现以下错误: Could not parse the remainder: '{{' from '{{' 我也尝试嵌套条件,但是我绝对是HTML的初学者,所以我希望至少获得
我正在使用带有自定义模板的 Django forgot_password 框架。我正在使用 Django 1.5。我的自定义模板 password_reset_email.html 如下所示: {%
我的问题是: Print all numbers from low to high. If any number being printed is divisible by any divisor n
我是一名优秀的程序员,十分优秀!