Why is try...except in my code not working (gzip/text files) ?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Wed Nov 19 19:05:57 EST 2008


En Wed, 19 Nov 2008 13:25:03 -0200, Barak, Ron <Ron.Barak at lsi.com>  
escribió:

> I need to read a file that is either a gzip or a text file (on both *nix  
> and Windows).
> Since I didn't find a way to determine a file type, I thought of using  
> the following:
>
> import gzip
>
> FILE = "../dpm/save_state-ssp8400-F0023209_080723-110131/top.1"
> #FILE =  
> "../dpm/save_state-ssp8400-F0023209_080723-110131/var/log/sac.log.0.gz"
>
> try:
>         file = gzip.GzipFile(FILE, "r")
> except IOError:
>         file = open(FILE, "r")
>
> print file.read()
>
>
> Strangely, when FILE is a gzip file, all is fine.
> But, when FILE is a text file (as in the above code), I get the  
> following:
>
> $ python ./gzip_try.py
> Traceback (most recent call last):
>   File "./gzip_try.py", line 11, in <module>
>     print file.read()  <<<===================
>   File "c:\Python25\lib\gzip.py", line 220, in read
>     self._read(readsize)
>   File "c:\Python25\lib\gzip.py", line 263, in _read
>     self._read_gzip_header()
>   File "c:\Python25\lib\gzip.py", line 164, in _read_gzip_header
>     raise IOError, 'Not a gzipped file'
> IOError: Not a gzipped file
>
> Can you explain why the try...except in my code does not work ?
> Or, back to my original problem: how do I deal with a file whether it's  
> a text file or a gzip file ?

Note *where* the exception is raised. Until something is actually read, no  
check is made for the file format.

-- 
Gabriel Genellina




More information about the Python-list mailing list