how to reading binary data...
Bengt Richter
bokr at oz.net
Thu Oct 21 05:03:34 EDT 2004
On Thu, 21 Oct 2004 10:07:32 +0200, Miki Tebeka <miki.tebeka at zoran.com> wrote:
>Hello Sandeep,
>
>> I opened any particular file with the 'rb' mode that is read binary
>> mode. so python will treat the data as a raw data. now i want to read
>> first 4 bytes only then i will convert the first 4 bytes into long
>> datatype and then again read 4 bytes and will do the same.
>> But how to set & move the pointer using loop?
>Each time you read from a file the "file pointer" is automatically
>incrmented.
>
>>>> f = open(".bashrc")
>>>> f.tell()
>0L
>>>> f.read(1)
>'#'
>>>> f.tell()
>1L
>See http://docs.python.org/lib/bltin-file-objects.html
>
>> also how to convert into long?
>http://docs.python.org/lib/module-struct.html
>
>HTH.
Beware of cooked input if you want to convert binary data, if you're not on unix.
E.g., windows: (tell seems to tell the binary truth, but read collapses \r\n to \n
unless you use 'rb' mode)
>>> open('linesofthree.txt','rb').read()
'012\r\n567\r\nABC\r\n'
>>> f = open('linesofthree.txt')
>>> while True:
... pos = f.tell()
... byt = f.read(1)
... print '[%s:%r]' % (pos, byt),
... if not byt: break
...
[0:'0'] [1:'1'] [2:'2'] [3:'\n'] [5:'5'] [6:'6'] [7:'7'] [8:'\n'] [10:'A'] [11:'B'] [12:'C'] [13
:'\n'] [15:'']
>>> f = open('linesofthree.txt','rb')
>>> while True:
... pos = f.tell()
... byt = f.read(1)
... print '[%s:%r]' % (pos, byt),
... if not byt: break
...
[0:'0'] [1:'1'] [2:'2'] [3:'\r'] [4:'\n'] [5:'5'] [6:'6'] [7:'7'] [8:'\r'] [9:'\n'] [10:'A'] [11
:'B'] [12:'C'] [13:'\r'] [14:'\n'] [15:'']
>>> print open('linesofthree.txt','rb').read()
012
567
ABC
Regards,
Bengt Richter
More information about the Python-list
mailing list