|
|
@@ -11,6 +11,9 @@ class Reader(object):
|
|
|
self.protobufClass = protobufClass
|
|
|
self.file = file
|
|
|
self.f = open(self.file, "rb")
|
|
|
+
|
|
|
+
|
|
|
+ closed = property(lambda self: self.f.closed)
|
|
|
|
|
|
def __enter__(self):
|
|
|
pass
|
|
|
@@ -21,7 +24,6 @@ class Reader(object):
|
|
|
def next(self):
|
|
|
header = self.f.read(4)
|
|
|
if len(header) < 4:
|
|
|
- self.__exit__(None, None, None)
|
|
|
raise StopIteration()
|
|
|
length = struct.unpack('>i', header)
|
|
|
bytes = self.f.read(length[0])
|
|
|
@@ -31,15 +33,24 @@ class Reader(object):
|
|
|
|
|
|
def __next__(self):
|
|
|
self.next()
|
|
|
-
|
|
|
- def __exit__(self, exc_type, exc_val, exc_tb):
|
|
|
+
|
|
|
+ def isclosed(self):
|
|
|
+ return self.f.closed
|
|
|
+
|
|
|
+ def close(self):
|
|
|
self.f.close()
|
|
|
|
|
|
+ def __exit__(self, exc_type, exc_val, exc_tb):
|
|
|
+ if not self.closed:
|
|
|
+ self.close()
|
|
|
+
|
|
|
class Writer(object):
|
|
|
|
|
|
def __init__(self, file):
|
|
|
self.file = file
|
|
|
self.f = open(self.file, "wb")
|
|
|
+
|
|
|
+ closed = property(lambda self: self.f.closed)
|
|
|
|
|
|
def __enter__(self):
|
|
|
pass
|
|
|
@@ -66,10 +77,9 @@ class Writer(object):
|
|
|
def isclosed(self):
|
|
|
return self.f.closed
|
|
|
|
|
|
- closed = property(isclosed)
|
|
|
-
|
|
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
|
- self.close()
|
|
|
+ if not self.closed:
|
|
|
+ self.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
pass
|