为此看到了其他线程,常见的解决方案是在打开/写入文件时显式指定编码器(UTF-8)。另一个是忽略错误。我都试过了,但还是不行。
1 回答
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
open 标志跳过解码和重新编码:
with open(source, mode='rb') as from_A, open(destination, mode='wb') as to_A:
如果你只是想复制文件,你可以使用shutil
:
shutil.copyfile(source, destination)
于 2019-07-11T11:11:29.447 回答