# Django 4.1.8.dev20230308103347 ドキュメント

# `File` オブジェクト

`django.core.files` モジュールとそのサブモジュールでは、Django の基本的なファイルハンドリングに関するビルトインクラスが定義されています。

## `File` クラス

class `File`(file_object, name=None)

  `File` クラスは、Python の file object に Django 特有の追加機能を付け加えた薄いラッパーです。内部的でファイルを表現する必要がある場合には、Django はこのクラスを使います。

  `File` オブジェクトには次の属性とメソッドを持ちます。

  `name`

    `MEDIA_ROOT` からの相対パスを含むファイル名です。

  `size`

    bytes で表されたファイルサイズ。

  `file`

    このクラスがラッピングしている、素の file object クラスです。

    この属性をサブクラスで扱う場合には注意が必要です。

    `ContentFile` や `FieldFile` など `File` のサブクラスは、この属性を Python の file object 以外のオブジェクトに置き換えることがあります。このような場合には、この属性自体は `File` のサブクラスであるかもしれません (が、同じサブクラスとは限りません)。そのため、可能な限り、サブクラスの `file` 属性ではなく、サブクラス自身が持つ属性やメソッドを使用するようにしてください。

  `mode`

    ファイルの読み込み/書き込みのモードです。

  `open`(mode=None)

    Open or reopen the file (which also does `File.seek(0)`). The `mode` argument allows the same values as Python's built-in `open()`.

    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. `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 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 some `chunk_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 `seekable()`.

## The `ContentFile` class

class `ContentFile`(content, name=None)

  The `ContentFile` class inherits from `File`, but unlike `File` it 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)

  Django provides a built-in class specifically for images. `django.core.files.images.ImageFile` inherits all the attributes and methods of `File`, and additionally provides the following:

  `width`

    Width of the image in pixels.

  `height`

    Height of the image in pixels.

## 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 `save` is `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 `content` argument must be an instance of either `File` or 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 `save` is `True`, the model's `save()` method will be called once the file is deleted.