python2.7如何读取加载文件

时间:2017-05-26 02:17:48

标签: 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'

所以如何解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为未摘取的mtx中不存在密钥save_dict

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

mtx = save_dict.get('mtx', 'my default value')

# or check if the key exists
if 'mtx' in save_dict:
    process_value(save_dict['mtx'])

我建议在终端中打开python repl并检查那里的对象。例如:

# In the terminal
$ python
Python 3.6.1 (default, Mar 23 2017, 14:40:12)
[GCC ...]
Type "help", "copyright", "credits" or "license" for more information.

现在在python repl中,您可以逐行执行代码:

>>> import pickle
>>> with open('camera.p', 'rb') as f:
...     save_dict = pickle.load(f)
...
>>> type(save_dict)
<class 'dict'>
>>> save_dict.keys()
dict_keys(['foo', 'bar', 'x'])

这样可以让您更好地了解mtxsave_dict键意外丢失的原因。