def writeFile(self, obj, fileName, info=None, autoIncrement=False, fileType=None, **kwargs): """Write a file to this directory using obj.write(fileName), store info in the index. Will try to convert obj into a FileType if the correct type exists. """ if info is None: info = {} ## never put {} in the function default else: info = info.copy() ## we modify this later; need to copy first t = time.time() with self.lock: if fileType is None: fileType = filetypes.suggestWriteType(obj, fileName) if fileType is None: raise Exception("Can not create file from object of type %s" % str(type(obj))) fileClass = filetypes.getFileType(fileType) ## Increment file name if autoIncrement: fileName = self.incrementFileName(fileName) ## Write file fileName = fileClass.write(obj, self, fileName, **kwargs) self._childChanged() ## Write meta-info if not info.has_key('__object_type__'): info['__object_type__'] = fileType if not info.has_key('__timestamp__'): info['__timestamp__'] = t self._setFileInfo(fileName, info) self.emitChanged('children', fileName) return self[fileName]
def read(self, *args, **kargs): self.checkExists() with self.lock: typ = self.fileType() if typ is None: fd = open(self.name(), 'r') data = fd.read() fd.close() else: cls = filetypes.getFileType(typ) data = cls.read(self, *args, **kargs) return data
def writeFile(self, obj, fileName, info=None, autoIncrement=False, fileType=None, **kwargs): """Write a file to this directory using obj.write(fileName), store info in the index. Will try to convert obj into a FileType if the correct type exists. """ #print "Write file", fileName #p = Profiler(' ' + fileName + ': ') if info is None: info = {} ## never put {} in the function default else: info = info.copy() ## we modify this later; need to copy first t = time.time() with self.lock: #p.mark('lock') if fileType is None: fileType = filetypes.suggestWriteType(obj, fileName) if fileType is None: raise Exception("Can not create file from object of type %s" % str(type(obj))) #p.mark('type') fileClass = filetypes.getFileType(fileType) #p.mark('get class') ## Increment file name if autoIncrement: fileName = self.incrementFileName(fileName) #p.mark('increment') ## Write file fileName = fileClass.write(obj, self, fileName, **kwargs) #p.mark('write') self._childChanged() #p.mark('update') ## Write meta-info if not info.has_key('__object_type__'): info['__object_type__'] = fileType if not info.has_key('__timestamp__'): info['__timestamp__'] = t self._setFileInfo(fileName, info) #p.mark('meta') self.emitChanged('children', fileName) #p.mark('emit') return self[fileName]
def read(self, *args, **kargs): self.checkExists() with self.lock: typ = self.fileType() if typ is None: fd = open(self.name(), 'r') data = fd.read() fd.close() else: cls = filetypes.getFileType(typ) data = cls.read(self, *args, **kargs) #mod = __import__('acq4.filetypes.%s' % typ, fromlist=['*']) #func = getattr(mod, 'fromFile') #data = func(fileName=self.name()) return data