File
对象¶
django.core.files
模块及其子模块包含 Django 中用于基本文件处理的内置类。
File
类¶
- class File(file_object, name=None)[source]¶
File
类是对 Python 文件对象 的一个简单的封装,并添加了一些 Django 特定的功能。在内部,Django 在需要表示文件时使用此类。File
对象具有以下属性和方法- name¶
文件名称,包括相对于
MEDIA_ROOT
的相对路径。
- file¶
此类封装的底层 文件对象。
在子类中小心使用此属性。
一些
File
的子类,包括ContentFile
和FieldFile
,可能会用其他对象替换此属性,而不是 Python 文件对象。在这些情况下,此属性本身可能是一个File
子类(不一定与子类相同)。尽可能使用子类本身的属性和方法,而不是子类的file
属性。
- mode¶
文件的读/写模式。
- open(mode=None, *args, **kwargs)[source]¶
打开或重新打开文件(这也执行
File.seek(0)
)。mode
参数允许与 Python 的内置open()
相同的值。*args
和**kwargs
在mode
之后传递给 Python 的内置open()
。重新打开文件时,
mode
将覆盖文件最初打开的任何模式;None
表示以原始模式重新打开。它可以用作上下文管理器,例如
with file.open() as f:
。Django 5.0 中的变更添加了对传递
*args
和**kwargs
的支持。
- chunks(chunk_size=None)[source]¶
迭代文件,产生给定大小的“块”。
chunk_size
默认为 64 KB。这对于非常大的文件特别有用,因为它允许从磁盘流式传输文件,并避免将整个文件存储在内存中。
除了列出的方法外,
File
还公开了其file
对象的以下属性和方法:encoding
、fileno
、flush
、isatty
、newlines
、read
、readinto
、readline
、readlines
、seek
、tell
、truncate
、write
、writelines
、readable()
、writable()
和seekable()
。
ContentFile
类¶
ImageFile
类¶
附加到对象的文件的附加方法¶
任何与对象关联的 File
(如下面的 Car.photo
)还将具有几个额外的方法。
- 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()
方法。