Argparser返回“mode=client port=52085”并崩溃

2024-04-25 12:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我使用parser.parse_args(),内核就会崩溃。例如:

import argparse
import numpy as np

parser = argparse.ArgumentParser()
parser.add_argument("--return_counts", type=bool, default=True)

opt = parser.parse_args()

arr = np.random.randint(0, 10, 100)

它给出了以下错误:

usage: pydevconsole.py [-h] [--return_counts RETURN_COUNTS]
pydevconsole.py: error: unrecognized arguments: --mode=client --port=52085

但是,如果我使用parser.parse_known_args(),它是有效的。在

^{pr2}$

它起作用了,opt给出了:

^{3}$

并且unknown给出了:

Out[4]: ['--mode=client', '--port=52162']

有人能解释一下这背后的魔法吗?在


Tags: pyimportclientparserreturnparseportmode
2条回答

parse_argsparse_known_args使用sys.argv,除非向它们传递参数(例如parser.parse_args(['a', 'b', 'c'])

无论你开始做什么(大概是ipython/jupyter/etc)都是用 mode=client port=52162开始的

parse_known_args不产生错误并退出的原因是,它只解析已知的参数,而不会为未知参数生成错误(对于已知参数,例如,如果它们的类型错误),它仍然会产生错误

似乎您没有为命令行提供正确的参数。您需要向解析器添加更多参数。在

import argparse
import numpy as np

parser = argparse.ArgumentParser()
parser.add_argument(" return_counts", type=bool, default=True)
parser.add_argument(" mode", default='client')
parser.add_argument(" port", default=52162)

args = parser.parse_args()

现在您可以在命令行中使用python3 pydevconsole.py return_counts True mode client port 52162,您将看到:

^{pr2}$

相关问题 更多 >