Browse Source

Fixed #18154 -- Documentation on closing File objects and best practices

Gabe Jackson 12 years ago
parent
commit
ffa6d95f65
1 changed files with 23 additions and 0 deletions
  1. 23 0
      docs/topics/files.txt

+ 23 - 0
docs/topics/files.txt

@@ -75,6 +75,29 @@ using a Python built-in ``file`` object::
 Now you can use any of the documented attributes and methods
 of the :class:`~django.core.files.File` class.
 
+Be aware that files created in this way are not automatically closed.
+The following approach may be used to close files automatically::
+
+    >>> from django.core.files import File
+
+    # Create a Python file object using open() and the with statement
+    >>> with open('/tmp/hello.world', 'w') as f:
+    >>>     myfile = File(f)
+    >>>     for line in myfile:
+    >>>         print line
+    >>> myfile.closed
+    True
+    >>> f.closed
+    True
+
+Closing files is especially important when accessing file fields in a loop
+over a large number of objects:: If files are not manually closed after
+accessing them, the risk of running out of file descriptors may arise. This
+may lead to the following error:
+
+    IOError: [Errno 24] Too many open files
+
+
 File storage
 ============