我的测试映像遇到的问题是我喜欢称之为“看起来我们不支持此文件格式”的错误,因为当我打开映像时它会这样说。你知道吗
try:
with open('GA-image test.png',encoding='utf8') as File:
FileBytes = File.read(1000000000)
TypeOfEncoding = 'utf8'
except:
try:
with open('GA-image test.png',encoding='Latin-1') as File:
FileBytes = File.read(1000000000)
TypeOfEncoding = 'Latin-1'
#To shorten this code I'm just going to give two of the types of encoding
with open('GA-image test2.png','wb') as FileW:
print(TypeOfEncoding)
FileBytes2 = str.encode(FileBytes)
FileBytes3 = FileW.write(FileBytes2)
这是指向此代码和我使用的测试映像的链接: https://cdn.discordapp.com/attachments/496421060565139466/548261637782503425/Reading_and_writing_a_file_useing_file_bytes.zip
图像数据不是文本,不要在文本模式下打开图像。不是为了读书,也不是为了写作。你知道吗
在Python中,使用
mode
参数中的t
或b
以两种模式之一打开文件:文本模式和二进制模式。如果两者都不使用,则隐含t
。你知道吗文本模式仅仅是二进制模式之上的一个额外层,在这个层中,二进制数据使用standard text codec从文本转换到。绝大多数图像格式,包括PNG,都不是文本格式,你不能用文本编解码器解码它们的数据。你知道吗
因此,请始终以二进制模式打开这些文件,并在文件模式中添加
b
字符:文本编解码器只是以一系列字节存储信息的一种形式,PNG等图像格式则是另一种形式,并不是设计为具有文本的意义。你总是可以把图像数据解码成拉丁语-1,这是一个巧合,拉丁语-1编解码器的设计是一个意外,并非故意的。你知道吗
附带说明:使用
except
通常是一个坏主意,因为它捕获所有异常,而不仅仅是打开文件时的错误或解码错误,而这些错误总是由于尝试将PNG数据读取为UTF-8而产生的。尽可能使用特定的异常。你知道吗相关问题 更多 >
编程相关推荐