On Mon, Nov 16, 2009 at 5:58 AM, Stephen Nelson-Smith <sanel...@gmail.com> wrote: > I'm trying to write a gzipped file on the fly: > > merged_log = merge(*logs) > > with gzip.open('/tmp/merged_log.gz', 'w') as output: > for stamp, line in merged_log: > output.write(line) > > But I'm getting: > > Traceback (most recent call last): > File "./magpie.py", line 72, in <module> > with gzip.open('/tmp/merged_log.gz', 'w') as output: > AttributeError: GzipFile instance has no attribute '__exit__' > > What am I doing wrong, and how do I put it right?
gzip.open() doesn't support the context manager protocol needed for it to be used in a 'with' statement. Just do this old-style: output = gzip.open('/tmp/merged_log.gz', 'w') try: for stamp, line in merged_log: output.write(line) finally: output.close() See PEP 343 this explanation of context managers if you want to know why you got this specific error: effbot.org/zone/python-with-statement.htm http://www.python.org/dev/peps/pep-0343/ Kent _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor