我使用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'
所以如何解决这个问题,谢谢!
答案 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'])
这样可以让您更好地了解mtx
中save_dict
键意外丢失的原因。