概述
文章目录
- 背景
- 原因
- 解决方案
- 方法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.所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复