File
オブジェクト¶
django.core.files
モジュールとそのサブモジュールでは、Django の基本的なファイルハンドリングに関するビルトインクラスが定義されています。
File
クラス¶
-
class
File
(file_object, name=None)[ソース]¶ File
クラスは、Python の file object に Django 特有の追加機能を付け加えた薄いラッパーです。内部的でファイルを表現する必要がある場合には、Django はこのクラスを使います。File
オブジェクトには次の属性とメソッドを持ちます。-
name
¶ MEDIA_ROOT
からの相対パスを含むファイル名です。
-
file
¶ このクラスがラッピングしている、素の file object クラスです。
この属性をサブクラスで扱う場合には注意が必要です。
ContentFile
やFieldFile
などFile
のサブクラスは、この属性を Python の file object 以外のオブジェクトに置き換えることがあります。このような場合には、この属性自体はFile
のサブクラスであるかもしれません (が、同じサブクラスとは限りません)。そのため、可能な限り、サブクラスのfile
属性ではなく、サブクラス自身が持つ属性やメソッドを使用するようにしてください。
-
mode
¶ ファイルの読み込み/書き込みのモードです。
-
open
(mode=None, *args, **kwargs)[ソース]¶ ファイルを開くか再オープンします(これは
File.seek(0)
も行います)。mode
引数は、Python の組み込み関数open()
と同じ値を許可します。*args
と**kwargs
は、mode
の後に、Python の組み込み関数open()
に渡されます。ファイルを再オープンする際、
mode
はファイルが元々開かれていたモードを上書きします。None
はオリジナルのモードで再オープンすることを意味します。コンテキストマネージャとして使用できます。たとえば、
with file.open() as f:
のようにです。Changed in Django 5.0:*args
と**kwargs
を渡すためのサポートが追加されました。
-
chunks
(chunk_size=None)[ソース]¶ ファイルをイテレートし、指定されたサイズの「チャンク」を生成します。
chunk_size
のデフォルトは 64 KB です。これは非常に大きなファイルに特に便利であり、ディスクからストリーミングしてメモリ全体にファイルを保存することを避けることができます。
-
multiple_chunks
(chunk_size=None)[ソース]¶ chunk_size
(一括サイズ) で指定されたファイルの全内容にアクセスするために複数のチャンクが必要な場合はTrue
を返します。
リストされたメソッドに加えて、
File
は、そのfile
オブジェクトの以下の属性とメソッドを公開しています:encoding
,fileno
,flush
,isatty
,newlines
,read
,readinto
,readline
,readlines
,seek
,tell
,truncate
,write
,writelines
,readable()
,writable()
, およびseekable()
。-
ContentFile
クラス¶
ImageFile
クラス¶
オブジェクトに添付されたファイルに関する追加メソッド¶
オブジェクト(以下の Car.photo
のように)に関連付けられた File
には、いくつかの追加メソッドも用意されています。
-
File.
save
(name, content, save=True)¶ 提供されたファイル名と内容で新しいファイルを保存します。これは既存のファイルを置き換えるものではありませんが、新しいファイルを作成し、オブジェクトがそれを指すように更新します。
save
がTrue
の場合、ファイルが保存されたらモデルのsave()
メソッドが一度呼び出されます。つまり、次の二行です:>>> 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()
メソッドが一度呼び出されます。