File オブジェクト¶
django.core.files モジュールとそのサブモジュールでは、Django の基本的なファイルハンドリングに関するビルトインクラスが定義されています。
File クラス¶
-
class
File(file_object)[ソース]¶ 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)). Themodeargument allows the same values as Python's built-inopen().When reopening a file,
modewill override whatever mode the file was originally opened with;Nonemeans to reopen with the original mode.It can be used as a context manager, e.g.
with file.open() as f:.
-
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 to be streamed off disk and avoids storing the whole file in memory.
-
multiple_chunks(chunk_size=None)[ソース]¶ Returns
Trueif the file is large enough to require multiple chunks to access all of its content give somechunk_size.
In addition to the listed methods,
Fileexposes the following attributes and methods of itsfileobject:encoding,fileno,flush,isatty,newlines,read,readinto,readline,readlines,seek,tell,truncate,write,writelines,readable(),writable(), andseekable().-
The ContentFile class¶
-
class
ContentFile(File)[ソース]¶ The
ContentFileclass inherits fromFile, but unlikeFileit 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¶
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
saveisTrue, the model'ssave()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
contentargument must be an instance of eitherFileor of a subclass ofFile, such asContentFile.
-
File.delete(save=True)¶ Removes the file from the model instance and deletes the underlying file. If
saveisTrue, the model'ssave()method will be called once the file is deleted.