read from bin file

Dave Angel davea at ieee.org
Thu Dec 17 17:50:36 EST 2009



Jerry Hill wrote:
> On Thu, Dec 17, 2009 at 3:59 PM, luca72 <lucaberto at libero.it> wrote:
>   
>> I have a bin file that i read as:
>> in_file =pen('primo.ske', 'rb')
>> leggo =uca.readlines()
>>
>> i get a list like :
>> ['\x00\x80p\x8b\x00\x00\x01\x19\x9b\x11\xa1\xa1\x1f\xc9\x12\xaf\x81!
>> \x84\x01\x00\x01\x01\x02\xff\xff\x80\x01\x03\xb0\x01\x01\x10m\x7f\n',
>> etc...]
>>
>> but if i try to print  luca[0]
>> i get not the the string in the list but i get some like " 򀰉{"
>> how i can get a string like the string in the list?
>>     
>
> print repr(luca[0])
>
>   
You have several questions there. First, readlines() doesn't make sense 
if the file is binary. Unless you know that \n happens to be a delimiter 
in that particular formatted file, it makes more sense to just use 
read(), rather than readlines(). And in that case, you get a single 
string. You can specify how many bytes you want to read() each time.

Now when you print a list, print calls repr() on each item in the list. 
So Jerry is right that repr() is the direct answer to your question.

However, you may want a prettier output, such as that produced by 
binascii.hexlify(). A traditional dump file has hex bytes on one side, 
and printable characters on the other, with suitable spacing and such.

DaveA




More information about the Python-list mailing list