为什么我不能在Python中读取超过16字节的JPEG文件?
我正在尝试在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
这里有两个问题:
将读取模式设置为二进制。这样,
file.read
函数就不会试图把 '\r\n' 这样的序列转换掉。你在尝试把一个以 NULL 结尾的字符串打印到控制台。
print
函数会找到你字符串中的第一个零字符,然后就停止了。可以使用binascii.hexlify
来把它转换成十六进制格式:
f = open("test.jpg", "rb")
ima = f.read(16)
print "%s" % (binascii.hexlify(ima))