Skip to content


Bug in #232

wants to merge 1 commit into from

3 participants



There is a bug in when calling sync() or flush(). When writing to disk, the whole Netcdf structure is written, but the file is not rewound. Therefore, the second call to _write() (which can happen when closing the file) just append a second version of the structure after the first one.

This patch just adds a seek(0) before any writing operation.

pv commented

Can you add a regression test --- i.e., write a small test program that fails previously, but works after this bugfix?

#!/usr/bin/env python
import os
import as cdf

f = cdf.netcdf_file('', mode='w')
x = f.createDimension('x',4)
v = f.createVariable('v', 'i2', ['x'])

v[:] = 1
print "First read  : %d" % os.path.getsize('')

v[:] = 2
print "Second read : %d" % os.path.getsize('')

print "Last read   : %d" % os.path.getsize('')

Before the fix:

First read  : 80
Second read : 168
Last read   : 264

After the fix:

First read  : 80
Second read : 88
Last read   : 88

I converted the above to a regression test. It actually didn't work with numpy 1.7.0-dev (because of, so I fixed the dtype parameter handling as well. Please check if that looks OK: rgommers@76a983e


I merged this PR and my fix/tests in 7ac86ab, in order to get it in for 0.11.


Thanks for your contribution Marc.

@rgommers rgommers closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on May 23, 2012
  1. @honnorat
This page is out of date. Refresh to see the latest.
Showing with 1 addition and 0 deletions.
  1. +1 −0  scipy/io/
1  scipy/io/
@@ -305,6 +305,7 @@ def flush(self):
sync = flush
def _write(self):
self.fp.write(array(self.version_byte, '>b').tostring())
Something went wrong with that request. Please try again.