(已解决)Jupyter Notebook使用argparse报错:An exception has occurred, use %tb to see the full traceback.

2022-09-20 08:25:26

背景

在Jupyter Notebook中执行如下代码报错:

import argparse


parser= argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n","--num-epochs", default=5,type=int)
parser.add_argument("-t","--num-iters", default=60,type=int)
parser.add_argument("-b","--batch-size", default=1000,type=int)
parser.add_argument("-lr","--learning-rate", default=0.01,type=float)

args= parser.parse_args()

结果报错:
在这里插入图片描述

注意:这段代码只有在jupyter notebook中才会报错,在pycharm中是不会报错的。

原因

以下是个人理解,不一定对,但我认为是这样,希望对你有启发。

args= parser.parse_args()

parse_args()有两种形式:

1.parse_args()#从用户输入读取参数。
2.parse_args(args=["-n3""-b2"])#表示给n参数赋值为3,b参数赋值为2。其他参数默认。
parse_args(args=[])#表示所有参数使用默认。

而我们的报错情况是形式1,一旦执行parse_args()语句,python系统就会执行读取参数的操作(我们看不到),此时jupyter notebook系统默认会给一个奇怪的参数:

-f C:\Users***\AppData\Roaming\jupyter\runtime\kernel-229ed901-2d6b-48ce-a402-fc5d3a697aea.json

这个参数- f并不是我们需要的,所以报错。而pycharm不会给上面这个奇怪的参数,所以相安无事。

而如果采用形式2,python系统不再读取,所以不会读入那个-f参数。

解决方案

根据上面的原理,聪明的你应该想到了解决方案。

方法1

将parse_args()由形式1换成形式2。

最后一行换成:

import argparse


parser= argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n","--num-epochs", default=5,type=int)
parser.add_argument("-t","--num-iters", default=60,type=int)
parser.add_argument("-b","--batch-size", default=1000,type=int)
parser.add_argument("-lr","--learning-rate", default=0.01,type=float)


args= parser.parse_args(args=[])

成功:
在这里插入图片描述

方法2

添加一个接受上面那个参数的语句。

import argparse


parser= argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n","--num-epochs", default=5,type=int)
parser.add_argument("-t","--num-iters", default=60,type=int)
parser.add_argument("-b","--batch-size", default=1000,type=int)
parser.add_argument("-lr","--learning-rate", default=0.01,type=float)


parser.add_argument("-f","--file",default="file")#接收这个-f参数
args= parser.parse_args()print(args.file)

不报错,输出如下:

C:\Users***\AppData\Roaming\jupyter\runtime\kernel-229ed901-2d6b-48ce-a402-fc5d3a697aea.json


完结撒花

  • 作者:音程
  • 原文链接:https://liubingqing.blog.csdn.net/article/details/120097139
    更新时间:2022-09-20 08:25:26