为什么我不能在Python中读取超过16字节的JPEG文件?

5 投票
2 回答
21572 浏览
提问于 2025-04-16 09:48

我正在尝试在Python中读取一张JPG图片。

到目前为止,我有:

f = open("test.jpg")
ima = f.read(16)

print "'%s'"% (ima)

它读取了16个字节,并在控制台上显示了字符串,但我发现我似乎无法显示超过32个字节。为什么呢?

当我尝试读取32个或更多字节时,输出结果和读取16个字节时是一样的。为什么我不能读取超过16个字节的JPEG图片呢?

2 个回答

5

你可能需要把打开文件的模式设置为二进制:

f = open("test.jpg", "rb") # 'rb' here means "read mode, binary"

可以参考这个类似的问题,里面有更详细的说明。

11

这里有两个问题:

  1. 将读取模式设置为二进制。这样,file.read 函数就不会试图把 '\r\n' 这样的序列转换掉。

  2. 你在尝试把一个以 NULL 结尾的字符串打印到控制台。print 函数会找到你字符串中的第一个零字符,然后就停止了。可以使用 binascii.hexlify 来把它转换成十六进制格式:


f = open("test.jpg", "rb")
ima = f.read(16)

print "%s" % (binascii.hexlify(ima))

撰写回答