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 fromMEDIA_ROOT.

    • size

    • The size of the file in bytes.

    • file

    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(mode=None)

    • Open or reopen the file (which also does File.seek(0)).The mode 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_sizedefaults 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 some chunk_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:

      • width
      • Width of the image in pixels.

      • height

      • Height of the image in pixels.

    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 is True, the model's save() 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.

    • File.delete(save=True)