ソースを参照

add close method

zhzhenqin 9 年 前
コミット
02a7df6331
1 ファイル変更16 行追加10 行削除
  1. 16 10
      python/IntHeaderProtobufFile.py

+ 16 - 10
python/IntHeaderProtobufFile.py

@@ -13,16 +13,16 @@ class Reader(object):
         self.f = open(self.file, "rb")
 
     def __enter__(self):
-    	pass
+        pass
 
     def __iter__(self):
         return self
     
     def next(self):
-    	header = self.f.read(4)
-    	if len(header) < 4:
-    		self.__exit__(None, None, None)
-    		raise StopIteration();
+        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])
         protoObj = self.protobufClass()
@@ -42,15 +42,15 @@ class Writer(object):
         self.f = open(self.file, "wb")
 
     def __enter__(self):
-    	pass
+        pass
 
     def write(self, message):
-    	if isinstance(message, str):
+        if isinstance(message, str):
             length = len(message)
             self.f.write(struct.pack(">i", length))
             self.f.write(message)
             return
-    	if isinstance(message, _message.Message):
+        if isinstance(message, _message.Message):
             bytes = message.SerializeToString()
             length = len(bytes)
             self.f.write(struct.pack(">i", length))
@@ -59,9 +59,15 @@ class Writer(object):
         
     def flush(self):
         self.f.flush()
-                    
-    def __exit__(self, exc_type, exc_val, exc_tb):
+
+    def close(self):
         self.f.close()
+       
+    def isclosed(self):
+        return self.f.closed
+
+    def __exit__(self, exc_type, exc_val, exc_tb):
+        self.close()
 
 if __name__ == "__main__":
     pass