[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Python crashes when opening an OPeNDAP dataset on Windows from a directory without write access
- Subject: Re: Python crashes when opening an OPeNDAP dataset on Windows from a directory without write access
- Date: Mon, 25 Jun 2012 15:30:26 -0600
Does this really crash Python? Wow.
I would hope it would just raise an exception. I would hope the DAP system
would use $TMP (unix) or %TEMP% (Windows), which are guaranteed writable
folders, instead of the current directory, but apparently not. However,
if these temp files have the possibility of being quite large (not out
of the realm of possibility!) I can understand not wanting to fillup system
$TMP. Maybe that's why it's the way it is.
It's encouraging that this turns out
to be a simple write access issue instead of some deep arcane .dll conflict
with ArcGIS.
Typically in ArcGIS geoprocessing, we
have a scratch workspace available that is used to write temporary files.
This could be handled in ArcGIS by simply having our script tool os.chdir
to arcpy.scratchWorkspace (or if that is a geodatabase, the folder above
it) and maybe even checking to be sure it's writable, before we call netCDF4.Dataset().
Or always start ArcMap from a writeable folder.
Curtis Price ~ http://profile.usgs.gov/cprice
From:
| Rich Signell <address@hidden>
|
To:
| address@hidden
|
Cc:
| address@hidden, Curtis V
Price <address@hidden>
|
Date:
| 06/25/2012 03:11 PM
|
Subject:
| Python crashes when opening an OPeNDAP
dataset on Windows from a directory without write access
|
Sent by:
| address@hidden |
If you try to use NetCDF4-python (which wraps the
Unidata netCDF C
library) to open an OPeNDAP dataset on Windows from a directory
without write access, Python crashes. If you would like to try
crashing your python (unless you have write permission to c:\windows),
here's an example:
import os
import netCDF4
os.chdir('c:\windows')
url=''
nc=netCDF4.Dataset(url)
The NetCDF4-Python guys say they can't do anything about this, because
the basic problem is on the Unidata side. According to Christoph
Gohlke, NetCDF wants to write a temporary file when accessing OPeNDAP
files, and apparently it wants to write in the current directory.
And I guess if it can't write, Python crashes.
There is mention of a temporary file here:
http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/DAP-Support.html
but it's not clear that wants to write to the current directory.
This came up because we were using NetCDF4-Python from the Python
Command Window in ArcGIS, and the default directory for the command
window was (c:\windows\system32) which of course is not typically
writable by an ordinary user.
Can we fix this somehow?
We aren't going to win many converts to OPeNDAP if they can crash
ArcGIS by opening a remote dataset.
I'm cc'ing the Enthought Python gang and Curtis Price, our Python-GIS
guru, so they are aware of the problem.
Thanks,
Rich
--
Dr. Richard P. Signell (508) 457-2229
USGS, 384 Woods Hole Rd.
Woods Hole, MA 02543-1598