Exemple #1
0
    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]
Exemple #2
0
 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
Exemple #3
0
    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]
Exemple #4
0
 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