pie*_*pie 127 python utf-8 python-3.x
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
Run Code Online (Sandbox Code Playgroud)
Traceback(最近一次调用最后一次):
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
Run Code Online (Sandbox Code Playgroud)
错误的原因是什么?Python的版本是3.5.2.
Alf*_*lfe 134
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()
Run Code Online (Sandbox Code Playgroud)
这b在该模式说明open()指出,该文件应被视为二进制,所以contents仍将是一个bytes.这种方式不会发生解码尝试.
Nit*_*Pal 58
使用此解决方案,它将剥离(忽略)字符并返回没有它们的字符串.只有在您需要剥离它们而不是转换它们时才使用它.
with open(path, encoding="utf8", errors='ignore') as f:
Run Code Online (Sandbox Code Playgroud)
使用errors='ignore'
你只会丢失一些角色.但是如果你不关心它们,因为它们似乎是源于连接到我的套接字服务器的客户端的错误格式化和编程的额外字符.然后它是一个简单的直接解决方
参考
小智 17
有一个类似的问题,结束使用UTF-16解码.我的代码如下.
with open(path_to_file,'rb') as f:
contents = f.read()
contents = contents.rstrip("\n").decode("utf-16")
contents = contents.split("\r\n")
Run Code Online (Sandbox Code Playgroud)
这会将文件内容作为导入,但它将以UTF格式返回代码.从那里它将被解码和分隔线.
Pet*_*den 12
我遇到同样的错误时遇到过这个问题,经过一些研究我可以确认,这是当你尝试用UTF-8解码UTF-16文件时发生的错误.
对于UTF-16,第一个字符(UTF-16中的2个字节)是字节顺序标记(BOM),它用作解码提示,并且不会在解码字符串中显示为字符.这意味着第一个字节将是FE或FF,第二个字节将是另一个.
在我找到真正的答案后,重新编辑
小智 11
那些在处理 Pandas 数据帧时遇到类似错误的人使用以下解决方案。
示例解决方案。
df = pd.read_csv("File path", encoding='cp1252')
Run Code Online (Sandbox Code Playgroud)
Nwa*_*ume 10
我对 PNG 文件也有类似的问题。我尝试了上面的解决方案但没有成功。这个在python 3.8中对我有用
with open(path, "rb") as f:
Run Code Online (Sandbox Code Playgroud)
仅使用
base64.b64decode(a)
Run Code Online (Sandbox Code Playgroud)
代替
base64.b64decode(a).decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
这是由于读取文件时的编码方式不同造成的。在python中,它默认使用unicode对数据进行编码。但是,它可能不适用于各种平台。
我提出了一种编码方法,如果“utf-8”不起作用,它可以帮助您解决这个问题。
with open(path, newline='', encoding='cp1252') as csvfile:
reader = csv.reader(csvfile)
Run Code Online (Sandbox Code Playgroud)
如果您在此处更改编码方法,它应该可以工作。此外,您可以在此处找到其他编码方法standard-encodings,如果上述方法不适合您。
使用编码格式ISO-8859-1解决此问题。
小智 5
我UnicodeDecodeError在尝试使用 读取“.csv”文件时遇到了这个问题pandas.read_csv()。就我而言,我无法使用其他编码器类型来克服这个问题。但不是使用
pd.read_csv(filename, delimiter=';')
Run Code Online (Sandbox Code Playgroud)
我用了:
pd.read_csv(open(filename, 'r'), delimiter=';')
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎工作得很好。
注意:在open()函数中,使用'r'代替'rb'. 因为'rb'返回的bytes对象首先导致发生此解码器错误,所以在read_csv(). 但是'r'返回str需要的数据,因为我们的数据位于 中.csv,并且使用默认encoding='utf-8'参数,我们可以轻松地使用函数解析数据read_csv()。
| 归档时间: |
|
| 查看次数: |
403356 次 |
| 最近记录: |