Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
django-doc-18-zh
提交
0d404bf5
D
django-doc-18-zh
项目概览
OpenDocCN
/
django-doc-18-zh
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
django-doc-18-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0d404bf5
编写于
9月 04, 2015
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
9.4
上级
2ec5caa5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
126 addition
and
0 deletion
+126
-0
3_3_2_File objects.md
3_3_2_File objects.md
+126
-0
未找到文件。
3_3_2_File objects.md
0 → 100644
浏览文件 @
0d404bf5
# File对象 #
`django.core.files`
模块及其子模块包含了一些用于基本文件处理的内建类。
## File类 ##
`class File(file_object)`
`File`
类是Python
[
file 对象
](
https://docs.python.org/3/glossary.html#term-file-object
)
的一个简单封装,并带有Django特定的附加功能。需要表示文件的时候,Django内部会使用这个类。
File对象拥有下列属性和方法:
`name`
含有
`MEDIA_ROOT`
相对路径的文件名称。
`size`
文件的字节数。
`file`
这个类所封装的,原生的
[
file 对象
](
https://docs.python.org/3/glossary.html#term-file-object
)
。
`mode`
文件的读写模式。
`open([mode=None])`
打开或者重新打开文件(同时会执行
`File.seek(0)`
)。
`mode`
参数的值和Python内建的
`open()`
相同。
重新打开一个文件时,无论文件原先以什么模式打开,
`mode`
都会覆盖;
`None`
的意思是以原先的模式重新打开。
`read([num_bytes=None])`
读取文件内容。可选的
`size`
参数是要读的字节数;没有指定的话,文件会一直读到结尾。
`__iter__()`
迭代整个文件,并且每次生成一行。
```
Changed in Django 1.8:
File现在使用[通用的换行符](https://www.python.org/dev/peps/pep-0278)。以下字符会识别为换行符:Unix换行符'\n',WIndows换行符'\r\n',以及Macintosh旧式换行符'\r'。
```
`chunks([chunk_size=None])`
迭代整个文件,并生成指定大小的一部分内容。
`chunk_size`
默认为64 KB。
处理大文件时这会非常有用,因为这样可以把他们从磁盘中读取出来,而避免将整个文件存到内存中。
`multiple_chunks([chunk_size=None])`
如果文件足够大,需要按照提供的
`chunk_size`
切分成几个部分来访问到所有内容,则返回
`True`
。
`write([content])`
将指定的内容字符串写到文件。取决于底层的储存系统,写入的内容在调用
`close()`
之前可能不会完全提交。
`close()`
关闭文件。
除了这些列出的方法,
`File`
暴露了
`file`
对象的以下属性和方法:
`encoding`
,
`fileno`
,
`flush`
,
`isatty`
,
`newlines`
,
`read`
,
`readinto`
,
`readlines`
,
`seek`
,
`softspace`
,
`tell`
,
`truncate`
,
`writelines`
,
`xreadlines`
。
## ContentFile类 ##
`class ContentFile(File)[source]`
`ContentFile`
类继承自
`File`
,但是并不像
`File`
那样,它操作字符串的内容(也支持字节集),而不是一个实际的文件。例如:
```
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特地为图像提供了这个内建类。
`django.core.files.images.ImageFile`
继承了
`File`
的所有属性和方法,并且额外提供了以下的属性:
`width`
图像的像素单位宽度。
`height`
图像的像素单位高度。
## 附加到对象的文件的额外方法 ##
任何关联到一个对象(比如下面的
`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()`
方法会在文件删除之后调用。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[File objects](https://docs.djangoproject.com/en/1.8/ref/files/file/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录