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)
). Themode
argument allows the same values as Python's built-inopen()
.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 somechunk_size
.
-
close
()¶ Close the file.
In addition to the listed methods,
File
exposes the following attributes and methods of itsfile
object:encoding
,fileno
,flush
,isatty
,newlines
,read
,readinto
,readline
,readlines
,seek
,tell
,truncate
,write
,writelines
,readable()
,writable()
, andseekable()
.-
ContentFile
クラス¶
-
class
ContentFile
(content, name=None)¶ The
ContentFile
class inherits fromFile
, but unlikeFile
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")
ImageFile
クラス¶
-
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 ofFile
, 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
isTrue
, 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
content
argument must be an instance of eitherFile
or of a subclass ofFile
, such asContentFile
.
-
File.
delete
(save=True)¶ Removes the file from the model instance and deletes the underlying file. If
save
isTrue
, the model'ssave()
method will be called once the file is deleted.