Fileオブジェクト
django.core.files モジュールとそのサブモジュールには、Djangoでの基本的なファイル処理のための組み込みクラスが含まれています。
Fileクラス
- class File(file_object, name=None)
File クラスは、Python ファイルオブジェクトの薄いラッパーです。Django固有の機能がいくつか追加されています。 内部的には、Djangoはファイルを表す必要があるときにこのクラスを使用します。
File オブジェクトには、次の属性とメソッドがあります。
- name
:setting: `MEDIA_ROOT` からの相対パスを含むファイルの名前。
- size
ファイルのサイズ(バイト単位)。
- file
このクラスがラップする基になるファイルオブジェクト。
サブクラスではこの属性に注意してください。
ContentFile や FieldFile など、 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
オブジェクトの次の属性とメソッドを公開します:encoding
、fileno
、flush
、isatty
、newlines
、read
、readinto
、readline
、readlines
、seek
、tell
、truncate
、write
、writelines
、readable()
、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)
指定されたファイル名と内容で新しいファイルを保存します。 これは既存のファイルを置き換えることはありませんが、新しいファイルを作成し、それを指すようにオブジェクトを更新します。
save
がTrue
の場合、ファイルが保存されると、モデルの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)
- モデルインスタンスからファイルを削除し、基になるファイルを削除します。
save
がTrue
の場合、ファイルが削除されると、モデルのsave()
メソッドが呼び出されます。