Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP


Bug in #232

wants to merge 1 commit into from

3 participants

Marc Honnorat Pauli Virtanen Ralf Gommers
Marc Honnorat


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.

Pauli Virtanen
pv commented

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

Marc Honnorat
#!/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
Ralf Gommers

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

Ralf Gommers

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

Ralf Gommers

Thanks for your contribution Marc.

Ralf Gommers 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. Marc 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.