]> granicus.if.org Git - python/commitdiff
Raise the right exception (ValueError) for attempted I/O on closed StringIO
authorFred Drake <fdrake@acm.org>
Tue, 18 Aug 1998 17:43:08 +0000 (17:43 +0000)
committerFred Drake <fdrake@acm.org>
Tue, 18 Aug 1998 17:43:08 +0000 (17:43 +0000)
objects; this makes the emulation of file objects a bit better, and the
exceptions explain things a bit better.

Lib/StringIO.py

index dba38e42c0a06271720a79ff7d71cf75fa160480..fc195b94af3a7563d538b731747a1235bab77437 100644 (file)
@@ -41,8 +41,12 @@ class StringIO:
                        self.closed = 1
                        del self.buf, self.pos
        def isatty(self):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
                return 0
        def seek(self, pos, mode = 0):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
                if self.buflist:
                        self.buf = self.buf + string.joinfields(self.buflist, '')
                        self.buflist = []
@@ -52,8 +56,12 @@ class StringIO:
                        pos = pos + self.len
                self.pos = max(0, pos)
        def tell(self):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
                return self.pos
        def read(self, n = -1):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
                if self.buflist:
                        self.buf = self.buf + string.joinfields(self.buflist, '')
                        self.buflist = []
@@ -65,6 +73,8 @@ class StringIO:
                self.pos = newpos
                return r
        def readline(self, length=None):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
                if self.buflist:
                        self.buf = self.buf + string.joinfields(self.buflist, '')
                        self.buflist = []
@@ -87,6 +97,8 @@ class StringIO:
                        line = self.readline()
                return lines
        def write(self, s):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
                if not s: return
                if self.pos > self.len:
                        self.buflist.append('\0'*(self.pos - self.len))
@@ -105,7 +117,8 @@ class StringIO:
        def writelines(self, list):
                self.write(string.joinfields(list, ''))
        def flush(self):
-               pass
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
        def getvalue(self):
                if self.buflist:
                        self.buf = self.buf + string.joinfields(self.buflist, '')