鍍金池/ 教程/ Python/ File對象
點(diǎn)擊劫持保護(hù)
安全問題歸檔
Model 類參考
將遺留數(shù)據(jù)庫整合到Django
關(guān)聯(lián)對象參考
內(nèi)建基于類的視圖的API
聚合
Django 中的用戶認(rèn)證
django.contrib.humanize
Django管理文檔生成器
分頁
使用Django輸出CSV
加密簽名
文件儲存API
安全
Django中的測試
國際化和本地化
為Django編寫首個補(bǔ)丁
條件表達(dá)式
日志
模型元選項(xiàng)
部署靜態(tài)文件
執(zhí)行查詢
使用Django認(rèn)證系統(tǒng)
基于類的視圖
中間件
編寫自定義的django-admin命令
Django 的設(shè)置
格式本地化
數(shù)據(jù)庫訪問優(yōu)化
錯誤報告
基于類的內(nèi)建通用視圖
編寫自定義存儲系統(tǒng)
編寫你的第一個 Django 程序 第3部分
編寫數(shù)據(jù)庫遷移
使用表單
編寫你的第一個 Django 程序 第2部分
編寫你的第一個 Django 程序 第1部分
如何使用會話
系統(tǒng)檢查框架
新手入門
信號
編寫視圖
如何使用WSGI 部署
編寫你的第一個Django應(yīng)用,第6部分
常見的網(wǎng)站應(yīng)用工具
Widgets
內(nèi)建的視圖
模型實(shí)例參考
視圖層
Django中的密碼管理
高級教程:如何編寫可重用的應(yīng)用
國際化和本地化
"本地特色"附加功能
TemplateResponse 和 SimpleTemplateResponse
模式編輯器
文件上傳
快速安裝指南
部署 Django
表單 API
表單素材 ( <code>Media</code> 類)
管理文件
其它核心功能
查找 API 參考
表單
Admin
數(shù)據(jù)庫函數(shù)
自定義查找
使用基于類的視圖處理表單
管理操作
開發(fā)過程
編寫你的第一個Django應(yīng)用,第5部分
進(jìn)行原始的sql查詢
模型層
多數(shù)據(jù)庫
編寫你的第一個 Django 程序 第4部分
Django安全
Django 初探
Django異常
重定向應(yīng)用
按需內(nèi)容處理
管理器
視圖裝飾器
驗(yàn)證器
使用Django輸出PDF
File對象
Django 的快捷函數(shù)
基于類的通用視圖 —— 索引
為模型提供初始數(shù)據(jù)
模板層
URL調(diào)度器
中間件
模型

File對象

django.core.files模塊及其子模塊包含了一些用于基本文件處理的內(nèi)建類。

File類

class File(file_object)

File 類是Python file 對象的一個簡單封裝,并帶有Django特定的附加功能。需要表示文件的時候,Django內(nèi)部會使用這個類。

File對象擁有下列屬性和方法:

name

含有MEDIA_ROOT相對路徑的文件名稱。

size

文件的字節(jié)數(shù)。

file

這個類所封裝的,原生的file 對象。

mode

文件的讀寫模式。

open([mode=None])

打開或者重新打開文件(同時會執(zhí)行File.seek(0))。 mode參數(shù)的值和Python內(nèi)建的open()相同。

重新打開一個文件時,無論文件原先以什么模式打開,mode都會覆蓋;None的意思是以原先的模式重新打開。

read([num_bytes=None])

讀取文件內(nèi)容??蛇x的size參數(shù)是要讀的字節(jié)數(shù);沒有指定的話,文件會一直讀到結(jié)尾。

__iter__()

迭代整個文件,并且每次生成一行。

Changed in Django 1.8:

File現(xiàn)在使用[通用的換行符](https://www.python.org/dev/peps/pep-0278)。以下字符會識別為換行符:Unix換行符'\n',WIndows換行符'\r\n',以及Macintosh舊式換行符'\r'。

chunks([chunk_size=None])

迭代整個文件,并生成指定大小的一部分內(nèi)容。chunk_size默認(rèn)為64 KB。

處理大文件時這會非常有用,因?yàn)檫@樣可以把他們從磁盤中讀取出來,而避免將整個文件存到內(nèi)存中。

multiple_chunks([chunk_size=None])

如果文件足夠大,需要按照提供的chunk_size切分成幾個部分來訪問到所有內(nèi)容,則返回True 。

write([content])

將指定的內(nèi)容字符串寫到文件。取決于底層的儲存系統(tǒng),寫入的內(nèi)容在調(diào)用close()之前可能不會完全提交。

close()

關(guān)閉文件。

除了這些列出的方法,File暴露了 file 對象的以下屬性和方法:encoding, fileno, flush, isatty, newlines, read, readinto, readlines, seek, softspace, tell, truncate, writelines, xreadlines。

ContentFile類

class ContentFile(File)[source]

ContentFile類繼承自File,但是并不像File那樣,它操作字符串的內(nèi)容(也支持字節(jié)集),而不是一個實(shí)際的文件。例如:

from __future__ import unicode_literals
from django.core.files.base import ContentFile

f1 = ContentFile("esta sentencia está en espa?ol")
f2 = ContentFile(b"these are bytes")

ImageFile類

class ImageFile(file_object)[source]

Django特地為圖像提供了這個內(nèi)建類。django.core.files.images.ImageFile繼承了 File的所有屬性和方法,并且額外提供了以下的屬性:

width

圖像的像素單位寬度。

height

圖像的像素單位高度。

附加到對象的文件的額外方法

任何關(guān)聯(lián)到一個對象(比如下面的Car.photo)的File都會有一些額外的方法:

File.save(name, content[, save=True])

以提供的文件名和內(nèi)容保存一個新文件。這樣不會替換已存在的文件,但是會創(chuàng)建新的文件,并且更新對象來指向它。如果saveTrue,模型的save()方法會在文件保存之后調(diào)用。這就是說,下面兩行:

>>> car.photo.save('myphoto.jpg', content, save=False)
>>> car.save()

等價于:

>>> car.photo.save('myphoto.jpg', content, save=True)

要注意content參數(shù)必須是File或者 File的子類的實(shí)例,比如ContentFile

File.delete([save=True])

從模型實(shí)例中移除文件,并且刪除內(nèi)部的文件。如果saveTrue,模型的save() 方法會在文件刪除之后調(diào)用。

譯者:Django 文檔協(xié)作翻譯小組,原文:File objects

本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請保留作者署名和文章出處。

Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。