python2.7如何读取加载文件

python2.7如何读取加载文件,python,Python,我使用python2.7,脚本是用python3.5编写的,代码是: with open('camera.p', 'rb') as f: save_dict = pickle.load(f) mtx = save_dict['mtx'] dist = save_dict['dist'] 错误是: KeyError: 'mtx' 那么如何解决这个问题呢,谢谢 这是因为未酸洗的保存目录中不存在密钥mtx 如果可以使用mtx的默认值,则可以使用dict.get功能: mtx=save_d

我使用python2.7,脚本是用python3.5编写的,代码是:

with open('camera.p', 'rb') as f:
     save_dict = pickle.load(f)
mtx = save_dict['mtx']
dist = save_dict['dist']
错误是:

KeyError: 'mtx'

那么如何解决这个问题呢,谢谢

这是因为未酸洗的
保存目录中不存在密钥
mtx

如果可以使用mtx的默认值,则可以使用dict.get
功能:

mtx=save_dict.get('mtx','my default value')
#或者检查密钥是否存在
如果保存目录中的“mtx”:
处理值(保存dict['mtx'])
我建议在终端中打开
python
repl并检查那里的对象。例如:

终端中的
#
$python
Python 3.6.1(默认值,2017年3月23日,14:40:12)
[GCC…]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
现在,在python repl中,您可以逐行执行代码:

导入pickle >>>打开('camera.p','rb')作为f: ... 保存dict=pickle.load(f) ... >>>类型(保存目录) >>>保存目录键() 口述键(['foo','bar','x'])
这将使您更好地了解为什么
mtx
键意外地从
save\u dict

中丢失,也就是说,您的字典中没有
mtx
键可以取消勾选。这完全取决于您如何解决(例如,只需告诉用户该文件无效,或者提供一些默认/猜测(如果有意义)。