File对象
class File(file_object)
File
类是Python file 对象的一个简单封装,并带有Django特定的附加功能。需要表示文件的时候,Django内部会使用这个类。
File对象拥有下列属性和方法:
name
含有MEDIA_ROOT
相对路径的文件名称。
size
文件的字节数。
file
这个类所封装的,原生的。
mode
文件的读写模式。
open([mode=None])
打开或者重新打开文件(同时会执行File.seek(0)
)。 mode
参数的值和Python内建的open()
相同。
重新打开一个文件时,无论文件原先以什么模式打开,mode
都会覆盖;None
的意思是以原先的模式重新打开。
读取文件内容。可选的size
参数是要读的字节数;没有指定的话,文件会一直读到结尾。
__iter__()
迭代整个文件,并且每次生成一行。
chunks([chunk_size=None])
迭代整个文件,并生成指定大小的一部分内容。chunk_size
默认为64 KB。
处理大文件时这会非常有用,因为这样可以把他们从磁盘中读取出来,而避免将整个文件存到内存中。
multiple_chunks([chunk_size=None])
如果文件足够大,需要按照提供的chunk_size
切分成几个部分来访问到所有内容,则返回 。
write([content])
将指定的内容字符串写到文件。取决于底层的储存系统,写入的内容在调用close()
之前可能不会完全提交。
close()
关闭文件。
除了这些列出的方法,File
暴露了 file
对象的以下属性和方法:encoding
, fileno
, flush
, isatty
, newlines
, read
, readinto
, readlines
, seek
, softspace
, tell
, truncate
, writelines
, xreadlines
。
class ContentFile(File)[source]
class ImageFile(file_object)[source]
Django特地为图像提供了这个内建类。django.core.files.images.ImageFile
继承了 File
的所有属性和方法,并且额外提供了以下的属性:
width
图像的像素单位宽度。
height
图像的像素单位高度。
任何关联到一个对象(比如下面的Car.photo
)的File
都会有一些额外的方法:
File.save(name, content[, save=True])
以提供的文件名和内容保存一个新文件。这样不会替换已存在的文件,但是会创建新的文件,并且更新对象来指向它。如果save
为True
,模型的save()
方法会在文件保存之后调用。这就是说,下面两行:
等价于:
要注意content
参数必须是File
或者 File
的子类的实例,比如ContentFile
。
File.delete([save=True])
从模型实例中移除文件,并且删除内部的文件。如果save
是True
,模型的 方法会在文件删除之后调用。