Maybe I am missing something. Expect data is comming continually to the serial port for the period say 10min. (say form the GPS), than it stops for 1 minute and so on over and over. I would like to log such a data to the different gzip files. My example was written just for the simplicity (I was trying to demonstrate the problem, it was not the real code and I was really tired trying to solve it by myself, sorry for the bugy example)
the better way how to write such a infinite loop can be probably: ===== 8< ===== g=0 x=0 while 1: if not g: x+=1 g=gzip.GzipFile("/root/foofile%s.gz" % x,"w") data=dataOnSerialPort() while data: myFlag=1 g.write(data) data=dataOnSerialPort(): else: if myFlag: g.close() pring g myFlag=0 But it looks like g.close() method does not close the file (while trying to print the g object, it still exists) > Your while loop is discarding result of dataOnSerialPort, so you're > probably writing empty string to the file many times. Typically this > kind of loop are implemented using iterators. Check if your s object > (is it from external library?) already implements iterator. If it does > then > > for data in s: > g.write(data) > > is all you need. If it doesn't, you can use iter to create iterator for > you: > > for data in iter(s.readLine, ''): > g.write(data) > > -- Leo -- http://mail.python.org/mailman/listinfo/python-list