KeyError错误出现时可能是检索不到这个键名,就我自己碰到的这个问题来说,是编码的原因。前因是用了一个别人写的读取标定参数的函数
def read_calib_file(path):
# taken from /hunse/kitti
float_chars = set("+- ")
data = {}
with open(path, 'rb') as f:
for line in ():
key, value = (':'.encode(), 1)
value = ()
data[key] = value
if float_chars.issuperset(value):
# try to cast to float array
try:
data[key] = (list(map(float, (' '))))
except ValueError:
# casting error: data[key] already eq. value, so pass
pass
return data
先用velo2cam变量存储整个参数文件,需要读取的一行参数内容为:R: 7.533745e-03 -9.999714e-01 -6.166020e-04 1.480249e-02 7.280733e-04 -9.998902e-01 9.998621e-01 7.523790e-03 1.480755e-02,但是读取的时候输入
velo2cam['R']
出现了KeyError ‘R’,发现是因为读取不到R,因为它是字符串str格式的,需要把它转换成byte格式,即
velo2cam['R'.encode()]
得到的返回值也是一个byte格式,后续要用还需要转回str,然后再转成list
velo2cam['R'.encode()].decode()