File
对象¶django.core.files
模块及其子模块包含用于基本文件处理的内建类。
File
类¶File
(file_object)[source]¶File
类是Python文件对象的一个简单封装,带有Django特定的附加功能。
需要表示文件的时候,Django内部会使用这个类。
File
对象拥有下列属性和方法:
name
¶文件名称,包括相对于MEDIA_ROOT
的相对路径。
size
¶文件的字节数。
file
¶这个类所封装的原生的文件对象。
在子类中小心这个属性。
File
的一些子类,包括ContentFile
和FieldFile
,可以用其它非Python文件对象替换这个属性。
在这些情况下,此属性本身可能是File
的一个子类(并不一定是相同的子类)。 只要有可能,使用子类本身的属性和方法,而不是子类的file
属性的属性和方法。
mode
¶文件的读写模式。
open
(mode=None)[source]¶打开或者重新打开文件(同时会执行File.seek(0)
)。
mode
参数的值和Python内建的open()
相同。
当重新打开文件时,mode
将覆盖文件最初打开的任何模式; None
表示以原始模式重新打开。
chunks
(chunk_size=None)[source]¶迭代整个文件,并生成指定大小的一部分内容。 chunk_size
默认为64 KB。
处理大文件时这会非常有用,因为这样可以把他们从磁盘中读取出来,而避免将整个文件存到内存中。
除了列出的这些方法之外,File
还开放它的file
对象的下列属性和方法:encoding
, fileno
, flush
, isatty
, newlines
, read
, readinto
, readline
, readlines
, seek
, softspace
, tell
, truncate
, write
, writelines
, xreadlines
, readable()
, writable()
和 seekable()
。
添加了readable()
和writable()
方法,并在Python 2中提供了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
方法会在文件删除之后调用。
2017年9月6日