Scanning a file

pinkfloydhomer at gmail.com pinkfloydhomer at gmail.com
Fri Oct 28 07:06:07 EDT 2005


I want to scan a file byte for byte for occurences of the the four byte
pattern 0x00000100. I've tried with this:

# start
import sys

numChars = 0
startCode = 0
count = 0

inputFile = sys.stdin

while True:
    ch = inputFile.read(1)
    numChars += 1

    if len(ch) < 1: break

    startCode = ((startCode << 8) & 0xffffffff) | (ord(ch))
    if numChars < 4: continue

    if startCode == 0x00000100:
        count = count + 1

print count
# end

But it is very slow. What is the fastest way to do this? Using some
native call? Using a buffer? Using whatever?

/David




More information about the Python-list mailing list