]> granicus.if.org Git - python/commitdiff
Add truncate() method to StringIO objects.
authorFred Drake <fdrake@acm.org>
Thu, 28 Sep 2000 04:21:06 +0000 (04:21 +0000)
committerFred Drake <fdrake@acm.org>
Thu, 28 Sep 2000 04:21:06 +0000 (04:21 +0000)
This closes SourceForge bug #115527.

Lib/StringIO.py

index 02eb7c8bec9483db482966f13adeeffd2d75e21b..334bf853a2c13b8db8bd50579f92eded8aadd70d 100644 (file)
@@ -13,6 +13,7 @@ buf = f.read()      # read until EOF
 buf = f.read(n)     # read up to n bytes
 buf = f.readline()  # read until end of line ('\n') or EOF
 list = f.readlines()# list of f.readline() results until EOF
+f.truncate([size])  # truncate file at to at most size (default: current pos)
 f.write(buf)        # write at current position
 f.writelines(list)  # for line in list: f.write(line)
 f.getvalue()        # return whole file's contents as a string
@@ -28,6 +29,7 @@ Notes:
 - There's a simple test set (see end of this file).
 """
 
+import errno
 import string
 
 class StringIO:
@@ -102,6 +104,17 @@ class StringIO:
                                break
                        line = self.readline()
                return lines
+       def truncate(self, size=None):
+               if self.closed:
+                       raise ValueError, "I/O operation on closed file"
+               if size is None:
+                       size = self.pos
+               elif size < 0:
+                       raise IOError(errno.EINVAL,
+                                      "Negative size not allowed")
+               elif size < self.pos:
+                       self.pos = size
+               self.buf = self.getvalue()[:size]
        def write(self, s):
                if self.closed:
                        raise ValueError, "I/O operation on closed file"