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

Barak, Ron Ron.Barak at lsi.com
Wed Nov 19 10:25:03 EST 2008


Hi,

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 ?

Thanks,
Ron.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20081119/1de030ea/attachment.html>


More information about the Python-list mailing list