每当我使用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()
,它是有效的。在
它起作用了,opt
给出了:
并且unknown
给出了:
Out[4]: ['--mode=client', '--port=52162']
有人能解释一下这背后的魔法吗?在
parse_args
和parse_known_args
使用sys.argv
,除非向它们传递参数(例如parser.parse_args(['a', 'b', 'c'])
)无论你开始做什么(大概是ipython/jupyter/etc)都是用
mode=client port=52162
开始的parse_known_args
不产生错误并退出的原因是,它只解析已知的参数,而不会为未知参数生成错误(对于已知参数,例如,如果它们的类型错误),它仍然会产生错误似乎您没有为命令行提供正确的参数。您需要向解析器添加更多参数。在
现在您可以在命令行中使用
^{pr2}$python3 pydevconsole.py return_counts True mode client port 52162
,您将看到:相关问题 更多 >
编程相关推荐