为此看到了其他线程,常见的解决方案是在打开/写入文件时显式指定编码器(UTF-8)。另一个是忽略错误。我都尝试过,但是都没用。
答案 0 :(得分:0)
文件应包含除以UTF-8或latin1编码的文本以外的其他内容,因为单独的0x9d
既不是有效的UTF-8,也不是latin1。
但是可以是许多其他编码。例如,可以为CP861,在这种情况下为Ø
。但是我随机拿了CP861,它可以是任何其他具有0x9d含义的编码。
这也可能是您文件中的错误,或者是文件中包含文本以外的内容(我敢打赌在位置5697之前它会失败)。
如果您不介意向我们提供更多信息,可能会有所帮助,也许:
with open(source, "rb") as from_A:
print(from_A.read()[5697-10, 5697+10])
此外,如果您确实不需要文件的内容,则可以使用b
打开标志来跳过解码并重新编码:
with open(source, mode='rb') as from_A, open(destination, mode='wb') as to_A:
如果您只是想复制文件,则可以使用shutil
:
shutil.copyfile(source, destination)