KeyError错误

 

KeyError错误出现时可能是检索不到这个键名,就我自己碰到的这个问题来说,是编码的原因。前因是用了一个别人写的读取标定参数的函数

def read_calib_file(path):
    # taken from https://github.com/hunse/kitti
    float_chars = set("0123456789.e+- ")
    data = {}
    with open(path, 'rb') as f:
        for line in f.readlines():
            key, value = line.split(':'.encode(), 1)
            value = value.strip()
            data[key] = value
            if float_chars.issuperset(value):
                # try to cast to float array
                try:
                    data[key] = np.array(list(map(float, value.split(' '))))
                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()

 

 

 

 

你可能感兴趣的:(BUG)