From: <as...@us...> - 2007-12-16 20:53:40
|
Revision: 4748 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4748&view=rev Author: astraw Date: 2007-12-16 12:53:35 -0800 (Sun, 16 Dec 2007) Log Message: ----------- rec2csv does not close filehandles passed in open Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/lib/matplotlib/cbook.py trunk/matplotlib/lib/matplotlib/mlab.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2007-12-16 19:28:46 UTC (rev 4747) +++ trunk/matplotlib/CHANGELOG 2007-12-16 20:53:35 UTC (rev 4748) @@ -1,3 +1,6 @@ +2007-12-16 rec2csv saves doubles without losing precision. Also, it + does not close filehandles passed in open. - JDH,ADS + 2007-12-13 Moved rec2gtk to matplotlib.toolkits.gtktools and rec2excel to matplotlib.toolkits.exceltools - JDH Modified: trunk/matplotlib/lib/matplotlib/cbook.py =================================================================== --- trunk/matplotlib/lib/matplotlib/cbook.py 2007-12-16 19:28:46 UTC (rev 4747) +++ trunk/matplotlib/lib/matplotlib/cbook.py 2007-12-16 20:53:35 UTC (rev 4748) @@ -224,7 +224,7 @@ except TypeError: return False else: return True -def to_filehandle(fname, flag='r'): +def to_filehandle(fname, flag='r', return_opened=False): """ fname can be a filename or a file handle. Support for gzipped files is automatic, if the filename ends in .gz. flag is a @@ -236,10 +236,14 @@ fh = gzip.open(fname, flag) else: fh = file(fname, flag) + opened = True elif hasattr(fname, 'seek'): fh = fname + opened = False else: raise ValueError('fname must be a string or file handle') + if return_opened: + return fh, opened return fh def flatten(seq, scalarp=is_scalar): Modified: trunk/matplotlib/lib/matplotlib/mlab.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mlab.py 2007-12-16 19:28:46 UTC (rev 4747) +++ trunk/matplotlib/lib/matplotlib/mlab.py 2007-12-16 20:53:35 UTC (rev 4748) @@ -2335,13 +2335,14 @@ for i, name in enumerate(r.dtype.names): funcs.append(csvformat_factory(formatd[name]).tostr) - fh = cbook.to_filehandle(fname, 'w') + fh, opened = cbook.to_filehandle(fname, 'w', return_opened=True) writer = csv.writer(fh, delimiter=delimiter) header = r.dtype.names writer.writerow(header) for row in r: writer.writerow([func(val) for func, val in zip(funcs, row)]) - fh.close() + if opened: + fh.close() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |