Fileオブジェクト—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/files/file
移動先:案内検索

Fileオブジェクト

django.core.files モジュールとそのサブモジュールには、Djangoでの基本的なファイル処理のための組み込みクラスが含まれています。

Fileクラス

class File(file_object, name=None)

File クラスは、Python ファイルオブジェクトの薄いラッパーです。Django固有の機能がいくつか追加されています。 内部的には、Djangoはファイルを表す必要があるときにこのクラスを使用します。

File オブジェクトには、次の属性とメソッドがあります。

name

:setting: `MEDIA_ROOT` からの相対パスを含むファイルの名前。

size

ファイルのサイズ(バイト単位)。

file

このクラスがラップする基になるファイルオブジェクト

サブクラスではこの属性に注意してください。

ContentFileFieldFile など、 File の一部のサブクラスは、この属性をPython ファイルオブジェクト以外のオブジェクトに置き換える場合があります。 このような場合、この属性自体が File サブクラスである可能性があります(必ずしも同じサブクラスである必要はありません)。 可能な限り、サブクラスのfile属性ではなく、サブクラス自体の属性とメソッドを使用してください。

mode

ファイルの読み取り/書き込みモード。

open(mode=None)

ファイルを開くか、再度開きます(File.seek(0)も実行します)。 mode引数は、Pythonの組み込みpython:open()と同じ値を許可します。

ファイルを再度開くと、modeは、ファイルが最初に開かれたモードを上書きします。 Noneは、元のモードで再度開くことを意味します。

コンテキストマネージャーとして使用できます。 with file.open() as f:

__iter__()

ファイルを繰り返し処理して、一度に1行ずつ生成します。

chunks(chunk_size=None)

ファイルを反復処理して、指定されたサイズの「チャンク」を生成します。 chunk_sizeのデフォルトは64KBです。

これは、ファイル全体をメモリに保存することを回避し、ディスクからストリーミングできるため、非常に大きなファイルで特に役立ちます。

multiple_chunks(chunk_size=None)

ファイルがすべてのコンテンツにアクセスするために複数のチャンクを必要とするほど大きい場合、Trueを返し、chunk_sizeを与えます。

close()

ファイルを閉じます。

リストされたメソッドに加えて、 File は、そのfileオブジェクトの次の属性とメソッドを公開します:encodingfilenoflushisattynewlinesreadreadintoreadlinereadlinesseektelltruncatewritewritelinesreadable()writable()、およびseekable()


ContentFileクラス

class ContentFile(content, name=None)

ContentFileクラスは File を継承しますが、 File とは異なり、実際のファイルではなく文字列コンテンツ(バイトもサポート)で動作します。 例えば:

from django.core.files.base import ContentFile

f1 = ContentFile("esta frase está en español")
f2 = ContentFile(b"these are bytes")


ImageFileクラス

class ImageFile(file_object, name=None)

Djangoは、画像専用の組み込みクラスを提供します。 django.core.files.images.ImageFile は、 File のすべての属性とメソッドを継承し、さらに以下を提供します。

width

画像の幅(ピクセル単位)。

height

画像の高さ(ピクセル単位)。


オブジェクトに添付されたファイルの追加メソッド

オブジェクトに関連付けられている File (以下のCar.photoのように)にも、いくつかの追加のメソッドがあります。

File.save(name, content, save=True)

指定されたファイル名と内容で新しいファイルを保存します。 これは既存のファイルを置き換えることはありませんが、新しいファイルを作成し、それを指すようにオブジェクトを更新します。 saveTrueの場合、ファイルが保存されると、モデルのsave()メソッドが呼び出されます。 つまり、次の2行です。

>>> car.photo.save('myphoto.jpg', content, save=False)
>>> car.save()

と同等です:

>>> car.photo.save('myphoto.jpg', content, save=True)

content引数は、 File または File のサブクラス( ContentFile など)のインスタンスである必要があることに注意してください。

File.delete(save=True)
モデルインスタンスからファイルを削除し、基になるファイルを削除します。 saveTrueの場合、ファイルが削除されると、モデルのsave()メソッドが呼び出されます。