Hi All, I want to use generators to print lines taken from a gzipped file. I've never used generators, so probably my problem is basic misunderstanding of generators.
In the below program, I expected the last line ("print line_") to print the
first line of the sac.log.gz file.
Instead, I get:
<generator object at 0x00B93A08>
Could you tell me what I'm doing wrong (or point me to a URL that could set me
straight) ?
Thanks,
Ron.
$ cat LogManager_try.py
#!/usr/bin/env python
import gzip
import os
class LogStream():
"""
"""
def __init__(self, filename):
self.filename = filename
self.input_file = self.open_file(filename)
def open_file(self, in_file):
"""
The gzip module checks if the input file is a gzipped file, only at the
read stage.
This is why the f.readline() is needed.
"""
try:
f = gzip.GzipFile(in_file, "r")
f.readline()
except IOError:
f = open(in_file, "r")
f.readline()
f.seek(0)
return(f)
def next_line(self, in_file):
"""
"""
for line_ in in_file:
yield line_.strip()
if __name__ == "__main__":
filename = "sac.log.gz"
log_stream = LogStream(filename)
line_ = log_stream.next_line(log_stream.input_file)
print line_
$ python LogManager_try.py
<generator object at 0x00B94648>
$
--
Ron Barak, System Development Engineer
LSI Technologies Israel Ltd
63 Bar Yehuda Road, Nesher 36651 Israel
Tel: (+972) 4 8203454 x1542 Fax: (+972) 4 8203464
[cid:263372909@22122008-2BEE][cid:263372...@22122008-2bf5]
Remember, Ginger Rogers did everything Fred Astaire did, but backwards and in
high heels. (Faith Whittlesey)
<<inline: image001.jpg>>
<<inline: image003.jpg>>
-- http://mail.python.org/mailman/listinfo/python-list
