我是靠谱客的博主 沉默金鱼,最近开发中收集的这篇文章主要介绍(已解决)Jupyter Notebook使用argparse报错:An exception has occurred, use %tb to see the full traceback.,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

      • 背景
      • 原因
      • 解决方案
        • 方法1
        • 方法2

背景

在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***AppDataRoamingjupyterruntimekernel-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***AppDataRoamingjupyterruntimekernel-229ed901-2d6b-48ce-a402-fc5d3a697aea.json


完结撒花

最后

以上就是沉默金鱼为你收集整理的(已解决)Jupyter Notebook使用argparse报错:An exception has occurred, use %tb to see the full traceback.的全部内容,希望文章能够帮你解决(已解决)Jupyter Notebook使用argparse报错:An exception has occurred, use %tb to see the full traceback.所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部