The File object
- class
File
(file_object)[源代码] - The
File
class is a thin wrapper around a Python with some Django-specific additions.Internally, Django uses this class when it needs to represent a file.
File
objects 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.
Be careful with this attribute in subclasses.
Some subclasses of , includingContentFile
and, may replace thisattribute 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). Wheneverpossible, use the attributes and methods of the subclass itselfrather than the those of the subclass's file
attribute.
mode
- Open or reopen the file (which also does
File.seek(0)
).Themode
argument allows the same valuesas Python's built-in .
When reopening a file, mode
will override whatever mode the filewas originally opened with; None
means to reopen with the originalmode.
It can be used as a context manager, e.g. with file.open() as f:
.
iter
()[源代码]Iterate over the file yielding one line at a time.
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 tobe streamed off disk and avoids storing the whole file in memory.
- (_chunk_size=None)[源代码]
Returns
True
if the file is large enough to require multiple chunksto access all of its content give somechunk_size
.
In addition to the listed methods, File
exposesthe 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 seekable()
.
- class
ContentFile
(File) - The class inherits from ,but unlike
File
it operates on string content(bytes also supported), rather than an actual file. For example:
- class
ImageFile
(file_object) Django provides a built-in class specifically for images. inherits all the attributesand methods of
File
, and additionallyprovides the following:
Any 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 notreplace the existing file, but will create a new file and update the objectto point to it. If
save
isTrue
, the model'ssave()
method willbe 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 or of a subclass of File
, such as.