dolmen zodb blob处理程序
dolmen.blob的Python项目详细描述
兼容性
为了确保blobfile的功能,我们测试它 针对一些常见的用途,由zope.file.file.file和 dolmen.file.namedfile :
>>> from dolmen.blob import BlobFile, IBlobFile >>> blob = BlobFile() >>> print blob.contentType application/octet-stream >>> blob.data '' >>> blob.filename u'' >>> blob = BlobFile(data='mydata', filename="foo.txt") >>> blob.filename u'foo.txt' >>> blob.data 'mydata' >>> blob.contentType 'text/plain' >>> blob.mimeType 'text/plain' >>> blob = BlobFile(data=u'some random data', filename="foo.txt") >>> blob.filename u'foo.txt' >>> blob.data 'some random data' >>> blob = BlobFile(contentType="plain/text") >>> blob.filename u'' >>> blob.data '' >>> blob.contentType 'plain/text' >>> import cStringIO >>> data = cStringIO.StringIO("mydata") >>> blob = BlobFile(data=data) >>> blob.data 'mydata' >>> blob.size 6 >>> from zope.size.interfaces import ISized >>> sized = ISized(blob) >>> sized <dolmen.file.size.Sized object at ...> >>> sized.sizeForDisplay() u'1 KB' >>> sized.sizeForSorting() ('byte', 6) >>> from zope.filerepresentation.interfaces import IReadFile, IWriteFile >>> reader = IReadFile(blob) >>> writer = IWriteFile(blob) >>> reader.read() 'mydata' >>> reader.size() 6 >>> writer.write('changing data') >>> reader.read() 'changing data' >>> reader.size() 13
让我们深入验证实现:
>>> from dolmen.file import INamedFile >>> from zope.interface import verify >>> import zope.file >>> blob = BlobFile(data='my data') >>> verify.verifyObject(IBlobFile, blob) True >>> verify.verifyObject(INamedFile, blob) True >>> verify.verifyObject(zope.file.interfaces.IFile, blob) True