瀏覽代碼

add __enter__ and __exit__

David Rose 16 年之前
父節點
當前提交
991d5179a3
共有 1 個文件被更改,包括 16 次插入5 次删除
  1. 16 5
      direct/src/stdpy/file.py

+ 16 - 5
direct/src/stdpy/file.py

@@ -179,7 +179,8 @@ class file:
         if not self.__reader:
             if not self.__writer:
                 # The stream is not even open at all.
-                raise ValueError
+                message = 'I/O operation on closed file'
+                raise ValueError, message
             # The stream is open only in write mode.
             message = 'Attempt to read from write-only stream'
             raise IOError, message
@@ -198,7 +199,8 @@ class file:
         if not self.__reader:
             if not self.__writer:
                 # The stream is not even open at all.
-                raise ValueError
+                message = 'I/O operation on closed file'
+                raise ValueError, message
             # The stream is open only in write mode.
             message = 'Attempt to read from write-only stream'
             raise IOError, message
@@ -229,7 +231,8 @@ class file:
         else:
             if self.__reader:
                 return self.__stream.tellg()
-        raise ValueError
+        message = 'I/O operation on closed file'
+        raise ValueError, message
     
     def truncate(self):
         """ Sorry, this isn't supported by Panda's low-level I/O,
@@ -240,7 +243,8 @@ class file:
         if not self.__writer:
             if not self.__reader:
                 # The stream is not even open at all.
-                raise ValueError
+                message = 'I/O operation on closed file'
+                raise ValueError, message
             # The stream is open only in read mode.
             message = 'Attempt to write to read-only stream'
             raise IOError, message
@@ -251,7 +255,8 @@ class file:
         if not self.__writer:
             if not self.__reader:
                 # The stream is not even open at all.
-                raise ValueError
+                message = 'I/O operation on closed file'
+                raise ValueError, message
             # The stream is open only in read mode.
             message = 'Attempt to write to read-only stream'
             raise IOError, message
@@ -259,6 +264,12 @@ class file:
             self.__writer.appendData(line)
         self.__lastWrite = True
 
+    def __enter__(self):
+        return self
+
+    def __exit__(self, t, v, tb):
+        self.close()
+
 open = file
 
 def listdir(path):