[Tutor] file.read() doesn't give full contents of compressed files

Kent Johnson kent37 at tds.net
Tue Feb 20 13:53:01 CET 2007


Barton David wrote:
> Hi,
> I'm really confused, and I hope somebody can explain this for me...
>  
> I've been playing with compression and archives, and have some .zip, 
> .tar, .gz and .tgz example files to test my code on.
> I can read them using either zipfile, tarfile, gzip or zlib, and that's 
> fine. But just reading them in 'raw' doesn't give me the whole string of 
> (compressed) bytes.
>  
> i.e...
>  
> len( file("mytestfile","r").read() ) != os.path.getsize("mytestfile")
>  
> Not even close, in fact. It seems like file.read() just stops after 
> reading a small portion of each example file, but why would that happen? 
> And what could I do if I wanted to read in the entire (compressed) 
> contents as a string?

Why do you think it stops reading? len() should be giving a bigger 
number than getsize() because you are reading the file in text mode 
which will convert \n to \r\n. Try file("mytestfile","rb").

Kent



More information about the Tutor mailing list