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。
Python尝试将字节数组(假定为utf-8编码字符串的
bytes
)转换为unicode字符串(str
)。这个过程当然是根据utf-8规则解码的。当它尝试这样做时,它遇到了一个在utf-8编码的字符串中不允许的字节序列(即0位置的这个0xff)。既然你没有提供任何我们可以查看的代码,我们只能猜测其余的。
从堆栈跟踪中,我们可以假设触发操作是读取文件(
contents = open(path).read()
)。我建议以这样的方式重新编码:模式说明符中的
b
声明文件应被视为二进制文件,因此contents
将保持为bytes
。这样就不会有解码尝试。有一个类似的问题,最终使用UTF-16解码。我的代码在下面。
这将把文件内容作为导入,但它将以UTF格式返回代码。从那里开始,它将被解码并用线隔开。
使用此解决方案,它将去掉(忽略)字符并返回不带字符的字符串。只有当你需要剥离它们而不是转换它们时才使用这个。
使用
errors='ignore'
你会失去一些角色。但如果你不在乎它们,因为它们似乎是额外的字符,是由于连接到我的socket服务器的客户端的格式和编程错误而产生的。 那么这是一个简单直接的解决方案。 reference相关问题 更多 >
编程相关推荐