File
物件¶
django.core.files
模組及其子模組包含 Django 中用於基本檔案處理的內建類別。
File
類別¶
- class File(file_object, name=None)[原始碼]¶
File
類別是 Python 檔案物件 的精簡封裝,並加入了一些 Django 特有的功能。在內部,Django 在需要表示檔案時使用此類別。File
物件具有以下屬性和方法- name¶
檔案的名稱,包含從
MEDIA_ROOT
的相對路徑。
- file¶
此類別封裝的底層 檔案物件。
在子類別中使用此屬性時請小心。
File
的某些子類別,包括ContentFile
和FieldFile
,可能會將此屬性替換為 Python 檔案物件 以外的物件。在這些情況下,此屬性本身可能是File
子類別 (並且不一定是相同的子類別)。盡可能使用子類別本身的屬性和方法,而不是子類別的file
屬性的屬性和方法。
- mode¶
檔案的讀/寫模式。
- open(mode=None, *args, **kwargs)[原始碼]¶
開啟或重新開啟檔案 (也會執行
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)[原始碼]¶
以給定大小的「區塊」迭代檔案。
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()
方法。