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:
Set read mode to binary. This way
file.read
function won't try to convert '\r\n' sequences.You're trying to print NULL-terminated string to the console.
print
function finds first zero character in your string and terminates. Usebinascii.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.
精彩评论