diff options
author | gcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f> | 2012-04-10 17:42:22 +0000 |
---|---|---|
committer | gcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f> | 2012-04-10 17:42:22 +0000 |
commit | 5603948b625eeea5e01271349f15eede9be4f323 (patch) | |
tree | 1c4f98c8a9a7ccfcdca45ea660729ebb19294975 /fs/memoryfs.py | |
parent | f8bee065e01a5d04035b8e4368b3eeea3e7d4a9e (diff) | |
download | pyfilesystem-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.py | 12 |
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:
|