解决Jupyter Notebook中parser.parse_args报错问题
本文介绍在Jupyter Notebook环境中使用argparse库时,parser.parse_args()因识别到Jupyter内部参数而报错的解决方案。通过将参数列表设为空数组args=[],可成功解析自定义命令行参数。
Jupyter Notebook中parser.parse_args报错解决方案
问题描述:
在Jupyter Notebook环境中调用args传递参数时,程序会抛出错误。
原始代码示例:args = parser.parse_args()
usage: ipykernel_launcher.py [-h] [--x_dim XDIM] [--h_dim HDIM] [--z_dim ZDIM]
[--ratio RATIO] [--seed SEED]
ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\MSI-NBOOK\AppData\Roaming\jupyter\runtime\kernel-f881e2bc-0a12-4207-b4cf-1cf484ec88f2.json
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2
F:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:2971: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
解决方案:
需要对原始代码进行如下修改:
args = parser.parse_args(args=[])
完成上述修改后,即可正常使用。
补充知识:argparse.ArgumentParser.parse_known_args()解析方法
该方法的用途在于,当脚本仅需解析部分命令行参数,而将剩余参数传递给其他脚本或程序时,parse_known_args()非常适用。其功能类似于parse_args(),但在遇到未定义的命令行参数时不会报错,而是返回一个包含命名空间元组和一个保存剩余命令行字符列表的元组。
示例演示:新建一个test.py文件,并在其中写入以下代码:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--flag_int',
type=float,
default=0.01,
help='flag_int.'
)
FLAGS, unparsed = parser.parse_known_args()
print(FLAGS)
print(unparsed)
运行结果如下:
$ python prog.py --flag_int 0.02 --double 0.03 a 1
Namespace(flag_int=0.02)
['--double', '0.03', 'a', '1']
以上即为解决Jupyter Notebook中parser.parse_args报错问题的全部内容,希望能为读者提供参考,并感谢大家的支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









