开发者

Why can I not read more than 16 bytes of a JPEG file in Python?

开发者 https://www.devze.com 2023-02-04 10:50 出处:网络
I am trying to read a JPG image in Python. So far i have: f = open(\"test.jpg\") ima = f.read(16) print \"\'%s\'\"% (ima)

I am trying to read a JPG image in Python.

So far i have:

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

print "'%s'"% (ima)

It reads 16 bytes and displays the string in console, but it looks like I 开发者_如何学Pythoncannot display more than 32 bytes. Why?

When it tries to read 32 or more bytes, the output will be the same as when it read 16 bytes. Why can I not read more than 16 bytes of the jpeg image?


Two issues here:

  1. Set read mode to binary. This way file.read function won't try to convert '\r\n' sequences.

  2. You're trying to print NULL-terminated string to the console. print function finds first zero character in your string and terminates. Use binascii.hexlify to convert it to the hex:


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

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


You probably need to set the open mode to binary:

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

See this similar question for a more thorough description.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号