def saveInFile(self): tmpDir = tempfile.mkdtemp(dir="/tmp") outputFormats = self.dataContainer.outputFormats if self.dataContainer.outputFileName[-1] == "/": raise Exception("Invalid filename", "looks like a directory !!!") outputDir, outputFileName = os.path.split(self.dataContainer.outputFileName) outputDir = os.path.abspath(outputDir) outputRootName, extension = os.path.splitext(outputFileName) os.chdir(tmpDir) os.makedirs(outputRootName) os.chdir(outputRootName) summaryFileName = SUMMARY_FILE verbose(self, "Saving summary in (%s)" % (summaryFileName)) verbose(self, "outputFormats is %s" % (outputFormats)) savetxt(summaryFileName, self.lr_summary, fmt=outputFormats) if self.verboseLevel > 4: cat(summaryFileName) for index, measurement in enumerate(self.measurements): sampleFileName = "%s.%s" % (measurement.pvName.lower(), LRECARRAY_FILE_EXTENSION) names = ["step_%d" % i for i in range(self.numberOfSteps + 1)] formats = ["float"] * len(names) dt = np.dtype({"names": names, "formats": formats}) verbose(self, "lr_samples dtype = %s" % dt, 5) numberOfSamples = measurement.numberOfSamples lr_samples = np.empty(numberOfSamples, dtype=dt).view(LRecArray) for stepNumber in range(0, self.numberOfSteps + 1): colName = "step_%d" % stepNumber lr_samples[colName] = measurement.samples[stepNumber] savetxt(sampleFileName, lr_samples, fmt=outputFormats) configurationFileName = os.path.join(tmpDir, outputRootName, PVEXPERIMENT_CONF_FILE) verbose(self, "Configuration file copy in %s" % configurationFileName, 4) self.saveConfigurationFile(configurationFileName) os.chdir(tmpDir) tar = tarfile.open(outputFileName, "w:gz") tar.add(outputRootName) tar.close() source = os.path.join(tmpDir, outputFileName) destination = os.path.join(outputDir, outputFileName) if not os.path.exists(outputDir): os.makedirs(outputDir) verbose(self, "Created %s" % outputDir) verbose(self, "%s/%s --> %s/%s" % (tmpDir, outputFileName, outputDir, outputFileName)) verbose(self, "%s --> %s" % (source, destination)) shutil.copy(source, destination) shutil.rmtree(tmpDir) verbose(self, "Data saved in %s / %s" % (outputDir, outputFileName))
def saveInFile(self): ''' In this method, the tar archive is created. In that archive is included: * Summary file * Sample files * Configuration of pvexperiment ''' curDir = os.getcwd() tmpDir = tempfile.mkdtemp(dir='/tmp') cellFormats = self.dataContainer.cellFormats if self.dataContainer.archiveFileName[-1] == '/' : raise Exception('Invalid filename', 'looks like a directory !!!') archiveDir, archiveFileName = os.path.split(self.dataContainer.archiveFileName) archiveDir = os.path.normpath(os.path.join(os.getcwd(),archiveDir)) archiveRootName, extension = os.path.splitext(archiveFileName) os.chdir(tmpDir) os.makedirs(archiveRootName) os.chdir(archiveRootName) # archiveRootName is name of topdir of untar'ed archive summaryFileName = SUMMARY_FILE verbose(self,"Saving summary in (%s)" % (summaryFileName)) verbose(self,"cellFormats is %s" % (cellFormats)) savetxt(summaryFileName, self.lr_summary, fmt=cellFormats) if self.verboseLevel>4 : cat(summaryFileName) for index, measurement in enumerate(self.measurements): sampleFileName = "%s.%s" % (measurement.pvName.lower(), LRECARRAY_FILE_EXTENSION) names = [ 'step_%d' % i for i in range(self.numberOfSteps+1) ] formats = ['float'] * len(names) dt = np.dtype({'names': names, 'formats': formats}) verbose(self,"lr_samples dtype = %s" % dt,5) numberOfSamples = measurement.numberOfSamples lr_samples = np.empty(numberOfSamples,dtype=dt).view(LRecArray) for stepNumber in range(0, self.numberOfSteps+1): colName = "step_%d" % stepNumber lr_samples[colName] = measurement.samples[stepNumber] savetxt(sampleFileName, lr_samples, fmt=cellFormats) # Save config file with measurements configurationFileName = os.path.join(tmpDir, archiveRootName, PVEXPERIMENT_CONF_FILE) verbose(self,"Configuration file copy in %s" % configurationFileName, 4) self.saveConfigurationFile(configurationFileName) os.chdir(tmpDir) tar = tarfile.open(archiveFileName, "w:gz") # archiveFileName is name of tgxz file (with extension) tar.add(archiveRootName) tar.close() source = os.path.join(tmpDir, archiveFileName) destination = os.path.join(archiveDir, archiveFileName) if not os.path.exists(archiveDir): os.makedirs(archiveDir) verbose(self, "Created %s" % archiveDir) verbose(self,"%s/%s --> %s/%s" % ( tmpDir, archiveFileName, archiveDir, archiveFileName)) verbose(self,"%s --> %s" % ( source, destination)) shutil.copy(source, destination) os.chdir(curDir) shutil.rmtree(tmpDir) verbose(self,"Data saved in %s / %s" % (archiveDir, archiveFileName))