错误UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0xff:无效的起始字节

发布于 2021-01-29 17:37:44

https://github.com/affinelayer/pix2pix-
tensorflow/tree/master/tools

在上述站点上编译“ process.py”时发生错误。

 python tools/process.py --input_dir data --            operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png

追溯(最近一次通话):

File "tools/process.py", line 235, in <module>
  main()
File "tools/process.py", line 167, in main
  src = load(src_path)
File "tools/process.py", line 113, in load
  contents = open(path).read()
      File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
  (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode     byte 0xff in position 0: invalid start byte

错误原因是什么?Python的版本是3.5.2。

关注者
0
被浏览
146
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Python尝试将字节数组(bytes假定为utf-8编码的字符串)转换为unicode字符串(str)。当然,此过程是根据utf-8规则进行的解码。尝试此操作时,会遇到utf-8编码的字符串中不允许的字节序列(即位置0处的此0xff)。

    由于您没有提供我们可以查看的任何代码,因此我们只能猜测其余的代码。

    从堆栈跟踪中,我们可以假定触发操作是从文件(contents = open(path).read())中读取数据。我建议以如下方式重新编码:

    with open(path, 'rb') as f:
      contents = f.read()
    

    b在该模式说明open(),指出该文件应作为二进制来处理,所以contents仍将是一个bytes。这样不会发生任何解码尝试。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看