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中,它是默认的 使用unicode编码数据。但是,它在不同的平台上可能并不适用。

我提出了一种编码方法,可以帮助您解决这个问题,如果'utf-8'不工作。

with open(path, newline='', encoding='cp1252') as csvfile:
    reader = csv.reader(csvfile)

如果你改变这里的编码方法,它应该可以工作。此外,如果上面不适合你,你可以在这里找到其他的编码方法——标准编码。

其他回答

我在遇到同样的错误时遇到了这个线程,在做了一些研究后,我可以确认,这是一个错误,当你试图用UTF-8解码UTF-16文件时发生。

在UTF-16中,第一个字符(在UTF-16中是2个字节)是字节顺序标记(Byte Order Mark, BOM),用于解码提示,不作为字符出现在解码后的字符串中。这意味着第一个字节将是FE或FF,第二个字节是另一个。

在我发现真正的答案后,被大量编辑

我对PNG文件也有类似的问题。我尝试了以上的解决方案,但都没有成功。 这个在python 3.8中对我有用

with open(path, "rb") as f:

这仅仅意味着选择了错误的编码来读取文件。

在Mac上,使用file -I file.txt查找正确的编码。在Linux操作系统中,请使用file -i file.txt。

如果你在mac上,检查是否有一个隐藏文件,. ds_store。删除文件后,我的程序工作。

以下代码在我的情况下工作:

Df = pd。Read_csv (filename,sep =' \t', encoding='cp1252')