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)[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.
 - 
size¶
- The size of the file in bytes. 
 - 
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)[source]¶
- Open or reopen the file (which also does - File.seek(0)). The- modeargument allows the same values as 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.
 - 
read(num_bytes=None)¶
- Read content from the file. The optional - sizeis the number of bytes to read; if not specified, the file will be read to the end.
 - 
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.
 - 
write(content)¶
- Writes the specified content string to the file. Depending on the storage system behind the scenes, this content might not be fully committed until - close()is called on the file.
 - In addition to the listed methods, - Fileexposes the following attributes and methods of its- fileobject:- encoding,- fileno,- flush,- isatty,- newlines,- read,- readinto,- readlines,- seek,- softspace,- tell,- truncate,- writelines,- xreadlines. If you are using Python 3, the- seekablemethod is also available.Changed in Django 1.9:- The - seekablemethod was added.
- 
The ContentFile class¶
- 
class ContentFile(File)[source]¶
- The - ContentFileclass inherits from- File, but unlike- Fileit operates on string content (bytes also supported), rather than an actual file. For example:- from __future__ import unicode_literals from django.core.files.base import ContentFile f1 = ContentFile("esta sentencia está en español") f2 = ContentFile(b"these are bytes") 
The ImageFile class¶
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.