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

and*_*pcg 5 python byte jpeg image

我试图用Python读取JPG图像.

到目前为止,我有:

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

print "'%s'"% (ima)
Run Code Online (Sandbox Code Playgroud)

它读取16个字节并在控制台中显示字符串,但看起来我不能显示超过32个字节.为什么?

当它尝试读取32个或更多字节时,输出将与读取16个字节时的输出相同.为什么我不能读取超过16个字节的jpeg图像?

yur*_*mik 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))
Run Code Online (Sandbox Code Playgroud)

  • 而不是在binascii中那个*可怕的*命名函数,`repr()`在这里可能更有用. (4认同)

ink*_*dmn 5

您可能需要将打开模式设置为二进制:

f = open("test.jpg", "rb") # 'rb' here means "read mode, binary"
Run Code Online (Sandbox Code Playgroud)

有关更详细的说明,请参阅此类似问题.