summaryrefslogtreecommitdiff
path: root/fs/memoryfs.py
diff options
context:
space:
mode:
authorgcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f>2012-04-10 17:42:22 +0000
committergcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f>2012-04-10 17:42:22 +0000
commit5603948b625eeea5e01271349f15eede9be4f323 (patch)
tree1c4f98c8a9a7ccfcdca45ea660729ebb19294975 /fs/memoryfs.py
parentf8bee065e01a5d04035b8e4368b3eeea3e7d4a9e (diff)
downloadpyfilesystem-5603948b625eeea5e01271349f15eede9be4f323.tar.gz
memoryfs.MemoryFile read() and write() methods now respect the file's open
mode. Fixes Issue113. git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@762 67cdc799-7952-0410-af00-57a81ceafa0f
Diffstat (limited to 'fs/memoryfs.py')
-rw-r--r--fs/memoryfs.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/memoryfs.py b/fs/memoryfs.py
index cc69e71..5e12a95 100644
--- a/fs/memoryfs.py
+++ b/fs/memoryfs.py
@@ -89,16 +89,22 @@ class MemoryFile(object):
pass
def __iter__(self):
+ if 'r' not in self.mode and '+' not in self.mode:
+ raise IOError("File not open for reading")
self.mem_file.seek(self.pos)
for line in self.mem_file:
yield line
@seek_and_lock
def next(self):
+ if 'r' not in self.mode and '+' not in self.mode:
+ raise IOError("File not open for reading")
return self.mem_file.next()
@seek_and_lock
def readline(self, *args, **kwargs):
+ if 'r' not in self.mode and '+' not in self.mode:
+ raise IOError("File not open for reading")
return self.mem_file.readline(*args, **kwargs)
def close(self):
@@ -115,6 +121,8 @@ class MemoryFile(object):
@seek_and_lock
def read(self, size=None):
+ if 'r' not in self.mode and '+' not in self.mode:
+ raise IOError("File not open for reading")
if size is None:
size = -1
return self.mem_file.read(size)
@@ -129,10 +137,14 @@ class MemoryFile(object):
@seek_and_lock
def truncate(self, *args, **kwargs):
+ if 'r' in self.mode and '+' not in self.mode:
+ raise IOError("File not open for writing")
return self.mem_file.truncate(*args, **kwargs)
#@seek_and_lock
def write(self, data):
+ if 'r' in self.mode and '+' not in self.mode:
+ raise IOError("File not open for writing")
self.memory_fs._on_modify_memory_file(self.path)
self._lock.acquire()
try: