django.core.files模块及其子模块包含了一些用于基本文件处理的内建类。
File 类是Python file 对象的一个简单封装,并带有Django特定的附加功能。需要表示文件的时候,Django内部会使用这个类。
File对象拥有下列属性和方法:
含有MEDIA_ROOT相对路径的文件名称。
文件的字节数。
文件的读写模式。
打开或者重新打开文件(同时会执行File.seek(0))。 mode参数的值和Python内建的open()相同。
重新打开一个文件时,无论文件原先以什么模式打开,mode都会覆盖;None的意思是以原先的模式重新打开。
读取文件内容。可选的size参数是要读的字节数;没有指定的话,文件会一直读到结尾。
迭代整个文件,并且每次生成一行。
File现在使用通用的换行符。以下字符会识别为换行符:Unix换行符'\n',WIndows换行符'\r\n',以及Macintosh旧式换行符\r。
迭代整个文件,并生成指定大小的一部分内容。chunk_size默认为64 KB。
处理大文件时这会非常有用,因为这样可以把他们从磁盘中读取出来,而避免将整个文件存到内存中。
如果文件足够大,需要按照提供的chunk_size切分成几个部分来访问到所有内容,则返回True 。
关闭文件。
除了这些列出的方法,File沿用了 file 对象的以下属性和方法:encoding, fileno, flush, isatty, newlines, read, readinto, readlines, seek, softspace, tell, truncate, writelines, xreadlines。
任何关联到一个对象(比如下面的Car.photo)的File都会有一些额外的方法:
使用给定的名字和内容来保存一个新的文件。这样不会替换已存在的文件,但是会创建新的文件,并且更新对象来指向它。如果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。
从模型实例中移除文件,并且删除内部的文件。如果save是True,模型的save() 方法会在文件删除之后调用。
2015年5月13日