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

Nic*_*ais 0 python argparse

每当我使用时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)
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误:

用法:pydevconsole.py [-h] [--return_counts RETURN_COUNTS]
pydevconsole.py:错误:无法识别的参数:--mode=client --port=52085

但是,如果我使用parser.parse_known_args(),它会起作用。

import argparse
import numpy as np

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

opt, unknown = parser.parse_known_args()

arr = np.random.randint(0, 10, 100)
Run Code Online (Sandbox Code Playgroud)

它有效,并opt给出了这个:

print(opt)
Out[3]: Namespace(return_counts=True)
Run Code Online (Sandbox Code Playgroud)

unknown给出了这个:

Out[4]: ['--mode=client', '--port=52162']
Run Code Online (Sandbox Code Playgroud)

有人可以解释这背后的巫术吗?

lbr*_*ile 6

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

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()
Run Code Online (Sandbox Code Playgroud)

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

print(args.return_counts) # True
print(args.mode) # client
print(args.port) # 52162
Run Code Online (Sandbox Code Playgroud)