1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """A wrapper for sys.stdout etc that provides tell() for current position"""
23
24
26
28 self.stream = stream
29 self.pos = 0
30 self.closed = 0
31
33 return getattr(self.stream, attrname, default)
34
36 if not self.closed:
37 self.closed = 1
38 self.stream.close()
39
40 - def seek(self, pos, mode=0):
41 raise ValueError("I/O operation on closed file")
42
44 if self.closed:
45 raise ValueError("I/O operation on closed file")
46 return self.pos
47
49 if self.closed:
50 raise ValueError("I/O operation on closed file")
51 self.stream.write(s)
52 self.pos += len(s)
53
55 if self.closed:
56 raise ValueError("I/O operation on closed file")
57 self.stream.writelines(lines)
58 self.pos += len("".join(lines))
59