File
对象
The class 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.
objects have the following attributes and methods:
-
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 , including
ContentFile
and , may replace this attribute with an object other than a Python file object. In these cases, this attribute may itself be a subclass (and not necessarily the same subclass). Whenever possible, use the attributes and methods of the subclass itself rather than the those of the subclass’sfile
attribute.-
The read/write mode for the file.
-
Open or reopen the file (which also does
File.seek(0)
). Themode
argument allows the same values as Python’s built-in .When reopening a file,
mode
will override whatever mode the file was originally opened with;None
means to reopen with the original mode.It can be used as a context manager, e.g. .
chunks
(chunk_size=None)[源代码]Iterate over the file yielding “chunks” of a given size.
chunk_size
defaults 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)[源代码]Returns
True
if the file is large enough to require multiple chunks to access all of its content give somechunk_size
.close
()[源代码]Close the file.
In addition to the listed methods, File
exposes the following attributes and methods of its file
object: encoding
, fileno
, flush
, isatty
, newlines
, read
, readinto
, readline
, readlines
, seek
, tell
, truncate
, write
, writelines
, readable()
, writable()
, and .
The ContentFile
class inherits from , but unlike File
it operates on string content (bytes also supported), rather than an actual file. For example:
Django provides a built-in class specifically for images. inherits all the attributes and methods of File
, and additionally provides the following:
width
Width of the image in pixels.
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 save
is True
, the model’s save()
method will be called once the file is saved. That is, these two lines:
are equivalent to:
Note that the content
argument must be an instance of either File
or of a subclass of , such as ContentFile
.
File.``delete
(save=True)