[Scipy-svn] r3483 - trunk/scipy/io
scipy-svn at scipy.org
scipy-svn at scipy.org
Thu Nov 1 17:37:39 EDT 2007
Author: chris.burns
Date: 2007-11-01 16:37:37 -0500 (Thu, 01 Nov 2007)
New Revision: 3483
Modified:
trunk/scipy/io/datasource.py
Log:
Fix bug in DataSource.abspath. Update documentation.
Modified: trunk/scipy/io/datasource.py
===================================================================
--- trunk/scipy/io/datasource.py 2007-11-01 14:41:20 UTC (rev 3482)
+++ trunk/scipy/io/datasource.py 2007-11-01 21:37:37 UTC (rev 3483)
@@ -4,6 +4,9 @@
low-level details. Through datasource, a researcher can obtain and use a
file with one function call, regardless of location of the file.
+DataSource is meant to augment standard python libraries, not replace them.
+It should work seemlessly with standard file IO operations and the os module.
+
DataSource files can originate locally or remotely:
- local files : '/home/guido/src/local/data.txt'
@@ -14,18 +17,18 @@
Example:
- >>> # Create a DataSource and use '/home/guido/tmpdata/' for local storage.
- >>> ds = datasource.DataSource('/home/guido/tmpdata/')
+ >>> # Create a DataSource, use os.curdir (default) for local storage.
+ >>> ds = datasource.DataSource()
>>>
- >>> # Open a remote, gzipped file.
+ >>> # Open a remote file.
>>> # DataSource downloads the file, stores it locally in:
- >>> # '/home/guido/tmpdata/www.scipy.org/not/real/data.txt.gz'
- >>> # opens the file with the gzip module and returns a file-like object.
- >>>
- >>> fp = ds.open('http://www.scipy.org/not/real/data.txt.gz')
- >>> fp.read() # Use the file
+ >>> # './www.google.com/index.html'
+ >>> # opens the file and returns a file object.
+ >>> fp = ds.open('http://www.google.com/index.html')
+ >>>
+ >>> # Use the file as you normally would
+ >>> fp.read()
>>> fp.close()
- >>> del ds, fp
"""
@@ -79,12 +82,13 @@
>>> ds.open('/home/guido/foobar.txt')
Opened file exists in tempdir like: /tmp/tmpUnhcvM/foobar.txt
+ Temporary directories are deleted when the DataSource is deleted.
"""
def __init__(self, destpath=os.curdir):
if destpath:
- self._destpath = destpath
+ self._destpath = os.path.abspath(destpath)
self._istmpdest = False
else:
self._destpath = tempfile.mkdtemp()
@@ -103,7 +107,7 @@
def _iswritemode(self, mode):
"""Test if the given mode will open a file for writing."""
- # Currently only used to test the bz2 files. Not thoroughly tested!
+ # Currently only used to test the bz2 files.
_writemodes = ("w", "+")
for c in mode:
if c in _writemodes:
@@ -193,8 +197,20 @@
return None
def abspath(self, path):
- """Return an absolute path in the DataSource destination directory.
+ """Return absolute path in the DataSource destination directory.
+ Functionality is idential to os.path.abspath. Returned path is not
+ guaranteed to exist.
+
+ *Parameters*:
+
+ path : {string}
+ Can be a local file or a remote URL.
+
+ *Returns*:
+
+ Complete path, rooted in the DataSource destination directory.
+
"""
# handle case where path includes self._destpath
@@ -207,8 +223,33 @@
def exists(self, path):
"""Test if path exists.
- Tests for local files, locally cached URLs and remote URLs.
+ Test if path exists as (in this order):
+ - a local file
+ - a remote URLs that have been downloaded and stored locally in the
+ DataSource directory
+ - a remote URL that has not been downloaded, but is valid and
+ accessible.
+ When path is an URL, `exist` will return True if it's stored
+ locally in the DataSource directory, or is a valid remote URL.
+
+ *Parameters*:
+
+ path : {string}
+ Can be a local file or a remote URL.
+
+ *Returns*:
+
+ boolean
+
+ *See Also*:
+
+ `abspath`
+
+ *Examples*
+
+ >>> ds = datasource.DataSource()
+ >>> ds.exists('http://www.google.com')
"""
upath = self.abspath(path)
More information about the Scipy-svn
mailing list