The File object¶
The django.core.files module and its submodules contain built-in classes
for basic file handling in Django.
The File class¶
- class File(file_object, name=None)[source]¶
- The - Fileclass is a thin wrapper around a Python file object with some Django-specific additions. Internally, Django uses this class when it needs to represent a file.- Fileobjects have the following attributes and methods:- name¶
- The name of the file including the relative path from - MEDIA_ROOT.
 - file¶
- The underlying file object that this class wraps. - Be careful with this attribute in subclasses. - Some subclasses of - File, including- ContentFileand- FieldFile, may replace this attribute with an object other than a Python file object. In these cases, this attribute may itself be a- Filesubclass (and not necessarily the same subclass). Whenever possible, use the attributes and methods of the subclass itself rather than the those of the subclass’s- fileattribute.
 - mode¶
- The read/write mode for the file. 
 - open(mode=None, *args, **kwargs)[source]¶
- Open or reopen the file (which also does - File.seek(0)). The- modeargument allows the same values as Python’s built-in- open().- *argsand- **kwargsare passed after- modeto Python’s built-in- open().- When reopening a file, - modewill override whatever mode the file was originally opened with;- Nonemeans to reopen with the original mode.- It can be used as a context manager, e.g. - with file.open() as f:.
 - chunks(chunk_size=None)[source]¶
- Iterate over the file yielding “chunks” of a given size. - chunk_sizedefaults to 64 KB.- This is especially useful with very large files since it allows them to be streamed off disk and avoids storing the whole file in memory. 
 - multiple_chunks(chunk_size=None)[source]¶
- Returns - Trueif the file is large enough to require multiple chunks to access all of its content give some- chunk_size.
 - In addition to the listed methods, - Fileexposes the following attributes and methods of its- fileobject:- encoding,- fileno,- flush,- isatty,- newlines,- read,- readinto,- readline,- readlines,- seek,- tell,- truncate,- write,- writelines,- readable(),- writable(), and- seekable().
The ContentFile class¶
- class ContentFile(content, name=None)[source]¶
- The - ContentFileclass inherits from- File, but unlike- Fileit operates on string content (bytes also supported), rather than an actual file. For example:- from django.core.files.base import ContentFile f1 = ContentFile("esta frase está en español") f2 = ContentFile(b"these are bytes") 
The ImageFile class¶
- class ImageFile(file_object, name=None)[source]¶
- Django provides a built-in class specifically for images. - django.core.files.images.ImageFileinherits all the attributes and methods of- File, and additionally provides the following:
Additional methods on files attached to objects¶
Any File that is associated with an object (as with Car.photo,
below) will also have a couple of extra methods:
- File.save(name, content, save=True)¶
- Saves a new file with the file name and contents provided. This will not replace the existing file, but will create a new file and update the object to point to it. If - saveis- True, the model’s- save()method will be called once the file is saved. That is, these two lines:- >>> car.photo.save("myphoto.jpg", content, save=False) >>> car.save() - are equivalent to: - >>> car.photo.save("myphoto.jpg", content, save=True) - Note that the - contentargument must be an instance of either- Fileor of a subclass of- File, such as- ContentFile.
- File.delete(save=True)¶
- Removes the file from the model instance and deletes the underlying file. If - saveis- True, the model’s- save()method will be called once the file is deleted.