可选参数无法识别
Optional argument not recognized
我正在尝试学习如何使用 argparse 并且 运行 在尝试实现可选参数时遇到了问题。这是我拥有的:
import argparse
def main(num1, num2=None):
if num1 and num2:
print(num1 + num2)
else:
print(num1)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Add some numbers')
parser.add_argument('num1', help='The first number')
parser.add_argument('-num2', help='The second number', action='store_true')
args = parser.parse_args()
main(args.num1, args.num2)
我确定这是一个非常简单的问题,但是当我在命令行中传递参数 2 和 3 时出现此错误:
usage: argparse_test.py [-h] [-num2] num1
argparse_test.py: error: unrecognized arguments: 3
为什么参数“无法识别”?
您只定义了一个位置参数 (num1
)。如果您传递两个位置参数,您会收到该错误消息。 -num2
是一个选项,不接受任何参数。换句话说,这些是有效的调用:
python argparse_test.py -num2 1
python argparse_test.py 1
其他都不是。
如果你想接受多个位置参数,你会想要
类似于:
parser = argparse.ArgumentParser(description='Add some numbers')
parser.add_argument('num1', help='The first number')
parser.add_argument('num2', nargs='?', help='The second number')
这将 num1
定义为必需的位置参数,并将 num2
定义为
将使用 0 或 1 个值的位置参数。
注意参数是字符串类型,所以必须将它们从字符串转换为整数,否则,num1 + num2 将附加两个字符串。
您的程序应该如下所示:
import argparse
def main(num1, num2=None):
if num1 and num2:
print(int(num1) + int(num2))
else:
print(num1)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Add some numbers')
parser.add_argument('num1', help='The first number')
parser.add_argument('-num2', help='The second number')
args = parser.parse_args()
main(args.num1, args.num2)
我正在尝试学习如何使用 argparse 并且 运行 在尝试实现可选参数时遇到了问题。这是我拥有的:
import argparse
def main(num1, num2=None):
if num1 and num2:
print(num1 + num2)
else:
print(num1)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Add some numbers')
parser.add_argument('num1', help='The first number')
parser.add_argument('-num2', help='The second number', action='store_true')
args = parser.parse_args()
main(args.num1, args.num2)
我确定这是一个非常简单的问题,但是当我在命令行中传递参数 2 和 3 时出现此错误:
usage: argparse_test.py [-h] [-num2] num1
argparse_test.py: error: unrecognized arguments: 3
为什么参数“无法识别”?
您只定义了一个位置参数 (num1
)。如果您传递两个位置参数,您会收到该错误消息。 -num2
是一个选项,不接受任何参数。换句话说,这些是有效的调用:
python argparse_test.py -num2 1
python argparse_test.py 1
其他都不是。
如果你想接受多个位置参数,你会想要 类似于:
parser = argparse.ArgumentParser(description='Add some numbers')
parser.add_argument('num1', help='The first number')
parser.add_argument('num2', nargs='?', help='The second number')
这将 num1
定义为必需的位置参数,并将 num2
定义为
将使用 0 或 1 个值的位置参数。
注意参数是字符串类型,所以必须将它们从字符串转换为整数,否则,num1 + num2 将附加两个字符串。
您的程序应该如下所示:
import argparse
def main(num1, num2=None):
if num1 and num2:
print(int(num1) + int(num2))
else:
print(num1)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Add some numbers')
parser.add_argument('num1', help='The first number')
parser.add_argument('-num2', help='The second number')
args = parser.parse_args()
main(args.num1, args.num2)