我需要讀取二進制文件中特定字符串的位置,然後對隨後的字節進行操作。該字符串是'colr'
(這是一個JPEG 2000文件),這裏是我到目前爲止有:Python - 從二進制文件中讀取字符串
from collections import deque
f = open('my.jp2', 'rb')
bytes = deque([], 4)
while ''.join(map(chr, bytes)) != 'colr':
bytes.appendleft(ord(f.read(1)))
,如果這個工程:
bytes = deque([0x63, 0x6F, 0x6C, 0x72], 4)
print ''.join(map(chr, bytes))
(返回 'COLR'),我不確定爲什麼我的循環中的測試永遠不會評估爲True
。我旋轉 - 只是掛着 - 當我讀完整個文件時,我甚至沒有退出。
你有看看http://stackoverflow.com/questions/6822725/rolling-or-sliding-window-iterator-in-python? –
@ Jan-Philip - 謝謝!我應該看看適應其中之一。首先,雖然,這個答案http://stackoverflow.com/a/6822761/714478讓我意識到,我只是追加到deque的錯誤的一面,我的方法,以上的糾正,工作得很好! – JStroop