def exportCsvData(self): """get CSV file for all folder objects""" fields = self.fields attrList = [fname for fname, fval in fields.items()] writerFile = os.tmpfile() writer = csv.writer(writerFile, delimiter=';', quoting=csv.QUOTE_NONNUMERIC) writer.writerow(attrList) itemList = self.context.items() for item_n, item_v in itemList: valueList = [] for attr in attrList: value = getattr(item_v, attr) valueList.append(value) writer.writerow(valueList) writerFile.seek(0) tmpText = writerFile.read() #writerFile.close() self.request.response.setHeader('Content-Type', 'application/vnd.ms-excel') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s.csv\"' % self.attrInterface.__name__) setNoCacheHeaders(self.request.response) return tmpText
def exportXmlData(self): """ export data as XML to the web browser """ from zope.xmlpickle import toxml import pickle obj = self.context pickleAdapter = IPickle(obj) if pickleAdapter: self.request.response.setHeader('Content-Type', 'application/ict-xml') filename = datetime.now().strftime('ictxml_%Y%m%d%H%M%S.xml') self.request.response.setHeader( 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) pickleDump = pickle.dumps(pickleAdapter.exportAsDict()) #return xmlEscapeWithCData( ##u'<?xml version="1.0" encoding="ISO-8859-1"?>' ##u'<datadump>%s</datadump>', #toxml(pickleDump)) #return pprint.pformat(pickleAdapter.exportAsDict(), \ #width=60, depth=6) return toxml(pickleDump) else: return _(u"no pickle adapter")
def profiler_exportXlsData(self, sheetName=u'ict', wbook=None, filename='ict.xls'): """get XLS file for all folder objects""" import cProfile, pstats # (filename, dataMem) = self.context.exportXlsData(self.request, # sheetName=sheetName, # wbook=wbook) print - ---------------------------------1 pr = cProfile.Profile() print - ---------------------------------2 (filename, dataMem) = pr.runcall(self.context.exportXlsData, self.request, sheetName=sheetName, wbook=wbook) pr.print_stats() print - ---------------------------------3 # p = pstats.Stats('cprof.out') # p.sort_stats('time').print_stats(10) self.request.response.setHeader('Content-Type', 'application/vnd.ms-excel') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) return dataMem
def reportPdfByObjectList(self, objsList): filename = datetime.now().strftime('ictrpt_%Y%m%d%H%M%S.pdf') f_handle, f_name = tempfile.mkstemp(filename) authorStr = self.request.principal.title my_formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') userTZ = getUserTimezone() longTimeString = my_formatter.format(\ userTZ.fromutc(datetime.utcnow())) versionStr = "%s [%s]" % (longTimeString, getIkVersion()) thisReporter = PDFReporter(f_name, self.request) thisReporter.setAuthorName(authorStr) thisReporter.setVersionStr(versionStr) # first run for (queryName, queryResults) in objsList: thisReporter.extendAllContentObjects(queryResults) # second run for (queryName, queryResults) in objsList: thisReporter.appendTitle1(queryName) thisReporter.append(queryResults) # debug output #for i_obj in thisReporter.allContentObjects: # print "%s (%s)" % (i_obj.ikName, i_obj.objectID) thisReporter.buildPdf() thisReporter.cleanup() self.request.response.setHeader('Content-Type', 'application/pdf') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) datafile = open(f_name, "r") dataMem = datafile.read() datafile.close() os.remove(f_name) return dataMem
def exportReqXmlData(self): """get xml file for all objects""" self.request.response.setHeader('Content-Type', 'application/x-ict-ok-data') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s.xml\"' % self.context.objectID) setNoCacheHeaders(self.request.response) return self.context.exportReqXmlData()
def children(self): """ """ container = self.context self.request.response.setHeader('content-type', 'text/xml;charset=utf-8') setNoCacheHeaders(self.request.response) res = (u'<?xml version="1.0" ?><children> %s </children>' % self.children_utility(container)) return res
def download(self): upfile = removeAllProxies(self.context.file) if self.request is not None: self.request.response.setHeader('Content-Type', self.context.contentType) self.request.response.setHeader('Content-Length', upfile.getSize()) self.request.response.setHeader(\ 'Content-Disposition', u'attachment; filename=\"%s\"' % self.context.filename) setNoCacheHeaders(self.request.response) return upfile.openDetached()
def exportAllXlsData(self): """get XLS file for all folder objects""" supervisor = getUtility(IAdmUtilSupervisor, name='AdmUtilSupervisor') (filename, dataMem) = supervisor.exportAllXlsData(self.request) self.request.response.setHeader('Content-Type', 'application/vnd.ms-excel') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) return dataMem
def getCmapxText(self): """get dot file and convert to client side image map """ utilGraphviz = queryUtility(IAdmUtilGraphviz, name='AdmUtilGraphviz') my_formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') userTZ = getUserTimezone() longTimeString = my_formatter.format(\ userTZ.fromutc(datetime.utcnow())) versionStr = "%s [%s]" % (longTimeString, getIkVersion()) setNoCacheHeaders(self.request.response) return utilGraphviz.getCmapxText(self.context, self.request)
def exportXlsData(self, sheetName=u'ict', wbook=None, filename='ict.xls'): """get XLS file for all folder objects""" (filename, dataMem) = self.context.exportXlsData(self.request, sheetName=sheetName, wbook=wbook) self.request.response.setHeader('Content-Type', 'application/vnd.ms-excel') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) return dataMem
def children(self): """ """ print "children" container = self.context self.request.response.setHeader('content-type', 'text/xml;charset=utf-8') setNoCacheHeaders(self.request.response) if self.request.get('view', None): res = (u'<?xml version="1.0" ?><children> %s </children>' % self.getViewList(container)) else: res = (u'<?xml version="1.0" ?><children> %s </children>' % self.children_utility(container)) return res
def getPngFile(self): """get dot file and convert to png """ utilGraphviz = queryUtility(IAdmUtilGraphviz, name='AdmUtilGraphviz') my_formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') userTZ = getUserTimezone() longTimeString = my_formatter.format(\ userTZ.fromutc(datetime.utcnow())) versionStr = "%s [%s]" % (longTimeString, getIkVersion()) self.request.response.setHeader('Content-Type', 'image/png') filename = "graphviz_%s.png" % self.context.ikName self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) return utilGraphviz.getPngFile(self.context, self.request)
def graphvizAll(self): """ will send the complete dot report to the browser """ utilGraphviz = queryUtility(IAdmUtilGraphviz, name='AdmUtilGraphviz') my_formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') userTZ = getUserTimezone() longTimeString = my_formatter.format(\ userTZ.fromutc(datetime.utcnow())) versionStr = "%s [%s]" % (longTimeString, getIkVersion()) #self.request.response.setHeader('Content-Type', 'image/png') #filename = "*.png" #self.request.response.setHeader(\ #'Content-Disposition', #'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) return utilGraphviz.getCmapxText(self.context, self.request)
def generateTestPdf(self): """ will generate a test pdf file """ filename = datetime.now().strftime('ictrpt_%Y%m%d%H%M%S.pdf') f_handle, f_name = tempfile.mkstemp(".pdf", filename) from org.ict_ok.admin_utils.reports import rpt_test01 rpt_t01 = rpt_test01.RptTest01(f_name) rpt_t01.outPdf() self.request.response.setHeader('Content-Type', 'application/pdf') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) datafile = open(f_name, "r") dataMem = datafile.read() datafile.close() os.remove(f_name) return dataMem
def reportPdfByQueryList(self, queryList): filename = datetime.now().strftime('ictrpt_%Y%m%d%H%M%S.pdf') f_handle, f_name = tempfile.mkstemp(filename) authorStr = self.request.principal.title my_formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') userTZ = getUserTimezone() longTimeString = my_formatter.format(\ userTZ.fromutc(datetime.utcnow())) versionStr = "%s [%s]" % (longTimeString, getIkVersion()) connection = IConnection(removeSecurityProxy(self.context)) parser = RPEQueryParser() oc = connection.root()['_oq_collection'] thisReporter = PDFReporter(f_name, self.request) thisReporter.setAuthorName(authorStr) thisReporter.setVersionStr(versionStr) queryproc = QueryProcessor(parser, oc) import pdb pdb.set_trace() queryResultsList = [(queryn, queryproc(queryv)) for (queryn, queryv) in queryList] # first run for (queryName, queryResults) in queryResultsList: thisReporter.extendAllContentObjects(queryResults) # second run for (queryName, queryResults) in queryResultsList: thisReporter.appendTitle1(queryName) thisReporter.append(queryResults) # debug output #for i_obj in thisReporter.allContentObjects: # print "%s (%s)" % (i_obj.ikName, i_obj.objectID) thisReporter.buildPdf() thisReporter.cleanup() self.request.response.setHeader('Content-Type', 'application/pdf') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) datafile = open(f_name, "r") dataMem = datafile.read() datafile.close() os.remove(f_name) return dataMem
def reportXML(self): filename = datetime.now().strftime('ict_%Y%m%d%H%M%S.xml') f_handle, f_name = tempfile.mkstemp(filename) authorStr = self.request.principal.title my_formatter = self.request.locale.dates.getFormatter( 'dateTime', 'medium') userTZ = getUserTimezone() longTimeString = my_formatter.format(\ userTZ.fromutc(datetime.utcnow())) versionStr = "%s [%s]" % (longTimeString, getIkVersion()) self.context.generateXML(f_name, authorStr, versionStr) self.request.response.setHeader('Content-Type', 'application/xml') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) datafile = open(f_name, "r") dataMem = datafile.read() datafile.close() os.remove(f_name) return dataMem
def singleBranchTree(self, root=''): """Return an XML document with the siblings and parents of an object. There is only one branch expanded, in other words, the tree is filled with the object, its siblings and its parents with their respective siblings. """ result = '' oldItem = self.context try: oldItemOid = self.context.getObjectId() except: oldItemOid = "+++" vh = self.request.getVirtualHostRoot() if vh: print "vh: ", vh vhrootView = zapi.getMultiAdapter( (vh, self.request), name='absolute_url') baseURL = vhrootView() + '/' try: rootName = '[' + vh.__name__ + ']' except: # we got the containment root itself as the virtual host # and there is no name. rootName = _('[top]') parents = getParentsFromContextToObject(self.context, vh) else: rootName = _('[top]') baseURL = self.request.getApplicationURL() + '/' parents = getParents(self.context) rootName = translate(rootName, context=self.request, default=rootName) for item in parents: # skip skin if present if item == oldItem: continue if item is None: continue subItems = [] if IReadContainer.providedBy(item): keys = list(item.keys()) else: keys = [] # include the site manager keys.append(u'++etc++site') for name in keys: # Only include items we can traverse to subItem = traverse(item, name, None) if subItem is None: continue if name == u'++etc++site' and \ not checkPermission(\ 'org.ict_ok.ikadmin_utils.usermanagement.Edit', subItem): continue iconUrl = self.getIconUrl(subItem) subitem_len = self.getLengthOf(subItem) dcAdapter = IGeneralDublinCore(subItem) xml_title = name if dcAdapter: if dcAdapter.title: xml_title = dcAdapter.title stateIconUrl = self.getStateIconUrl(subItem) if zapi.getParent(subItem): item_ppath = zapi.canonicalPath(zapi.getParent(subItem)) \ + u'/' item_ppath = item_ppath.replace('//', '/') else: item_ppath = "/" try: subItemOid = subItem.getObjectId() except: subItemOid = "---" stateOverview = self.getStateOverview(item) if subitem_len > 0: # the test below seems to be broken # with the ++etc++site case if subItem == oldItem: if oldItemOid == subItemOid: # focussed subItems.append(xmlEscapeWithCData( u'<collection isfocus="" title=%s name=%s ' u'iklen=%s ' u'icon_url=%s expable="" state_url=%s ' u'path=%s state_val=%s>%s</collection>', xml_title, name, subitem_len, iconUrl, stateIconUrl, item_ppath, stateOverview, result)) else: subItems.append(xmlEscapeWithCData( u'<collection title=%s name=%s iklen=%s ' u'icon_url=%s state_url=%s path=%s ' u'state_val=%s>%s</collection>', xml_title, name, subitem_len, iconUrl, stateIconUrl, item_ppath, stateOverview, result)) else: subItems.append(xmlEscape( u'<collection title=%s name=%s iklen=%s ' u'icon_url=%s expable="" state_url=%s path=%s/>', xml_title, name, subitem_len, iconUrl, stateIconUrl, item_ppath)) else: if subItem == oldItem: if oldItemOid == subItemOid: # focussed subItems.append(xmlEscapeWithCData( u'<collection isfocus="" title=%s ' u'name=%s iklen=%s ' u'icon_url=%s state_url=%s path=%s ' u'state_val=%s>%s</collection>', xml_title, name, subitem_len, iconUrl, stateIconUrl, item_ppath, stateOverview, result)) else: subItems.append(xmlEscapeWithCData( u'<collection title=%s name=%s iklen=%s ' u'icon_url=%s state_url=%s path=%s ' u'state_val=%s>%s</collection>', xml_title, name, subitem_len, iconUrl, stateIconUrl, item_ppath, stateOverview, result)) else: subItems.append(xmlEscape( u'<collection title=%s name=%s iklen=%s ' u'icon_url=%s state_url=%s path=%s/>', xml_title, name, subitem_len, iconUrl, stateIconUrl, item_ppath)) result = u' '.join(subItems) oldItem = item # do not forget root folder iconUrl = self.getIconUrl(oldItem) xml_title = "ICT_Ok" rootName = "." if len(result) > 0: # collection has content result = xmlEscapeWithCData( u'<collection title=%s name=%s baseURL=%s iklen=%s ' u'icon_url=%s path=%s isroot="">%s</collection>', xml_title, rootName, baseURL, len(oldItem), iconUrl, "/", result) else: result = xmlEscapeWithCData( u'<collection title=%s name=%s baseURL=%s iklen=%s ' u'icon_url=%s path=%s expable="" ' u'isroot="">%s</collection>', xml_title, rootName, baseURL, len(oldItem), iconUrl, "/", result) self.request.response.setHeader('Content-Type', 'text/xml') setNoCacheHeaders(self.request.response) title = translate(titleTemplate, context=self.request, default=titleTemplate) loading = translate(loadingMsg, context=self.request, default=loadingMsg) return xmlEscapeWithCData( u'<?xml version="1.0" encoding="ISO-8859-1"?>' u'<children title_tpl=%s title=%s ' u'loading_msg=%s>%s</children>', title, title, loading, result)
additionalAttributes) = \ self.getCollectionAttributes(oldItem) if len(result) > 0: # collection has content result = xmlEscapeWithCData( u'<collection isfocused2="" title=%s name=%s iklen=%s rem="3.1" ' u'icon_url=%s state_url=%s navparam="children5.xml" path=%s isopen="" isroot="">%s</collection>', xml_title, name, iklen, stateIconUrl, stateIconUrl, item_ppath, result) else: result = xmlEscapeWithCData( u'<collection isfocused2="" title=%s name=%s iklen=%s rem="3.2" ' u'icon_url=%s state_url=%s navparam="children6.xml" path=%s expable="" ' u'isroot="">%s</collection>', xml_title, name, iklen, stateIconUrl, stateIconUrl, item_ppath, result) self.request.response.setHeader('Content-Type', 'text/xml') setNoCacheHeaders(self.request.response) title = translate(titleTemplate, context=self.request, default=titleTemplate) loading = translate(loadingMsg, context=self.request, default=loadingMsg) return xmlEscapeWithCData( u'<?xml version="1.0" encoding="ISO-8859-1"?>' u'<children title_tpl=%s title=%s ' u'loading_msg=%s>%s</children>', title, title, loading, result) def singleBranchTree3(self, root=''): result = '' oldItem = self.context xml_title = '11111'
def singleBranchTree3(self, root=''): result = '' oldItem = self.context xml_title = '11111' name = '22222' subitem_len = 0 #oldItem = [] iconUrl = '' stateIconUrl = '' item_ppath = '' stateOverview = '' rootName = '8888' baseURL = '' subItems = [] # subItems.append(xmlEscapeWithCData( # u'<collection isfocused="" title=%s ' # u'name=%s iklen=%s rem="2.2.1.1" ' # u'icon_url=%s state_url=%s path=%s ' # u'state_val=%s>%s</collection>', # xml_title, name, subitem_len, iconUrl, # stateIconUrl, item_ppath, stateOverview, # result)) result = u' '.join(subItems) # dcAdapter = IGeneralDublinCore(oldItem) xml_title = oldItem.getDcTitle() # if dcAdapter: # if dcAdapter.title: # xml_title = dcAdapter.title iconUrl = self.getIconUrl(oldItem) url2 = urlparse(zapi.absoluteURL(oldItem, self.request)) name = url2[2].split('/')[-1] parentItem = zapi.getParent(oldItem) #parentItem.keys()[parentItem.values().index(oldItem)] stateIconUrl = self.getStateIconUrl(oldItem) #stateValue = self.getStateValue(oldItem) stateOverview = self.getStateOverview(oldItem) try: item_len = len(IContentList(oldItem).getContentList()) except TypeError: item_len = self.getLengthOf(oldItem) # item_ppath = zapi.canonicalPath(zapi.getParent(item)) + u'/' url = urlparse(zapi.absoluteURL(zapi.getParent(oldItem), self.request)) item_ppath = url.path + u'/' item_ppath = item_ppath.replace('//', '/') if len(result) > 0: # collection has content result = xmlEscapeWithCData( u'<collection title=%s name=%s iklen=%s rem="3.1" ' u'icon_url=%s path=%s isopen="" isroot="">%s</collection>', xml_title, name, len(oldItem), iconUrl, item_ppath, result) else: result = xmlEscapeWithCData( u'<collection title=%s name=%s iklen=%s rem="3.2" ' u'icon_url=%s path=%s expable="" ' u'isroot="">%s</collection>', xml_title, name, len(oldItem), iconUrl, item_ppath, result) self.request.response.setHeader('Content-Type', 'text/xml') setNoCacheHeaders(self.request.response) title = translate(titleTemplate, context=self.request, default=titleTemplate) loading = translate(loadingMsg, context=self.request, default=loadingMsg) return xmlEscapeWithCData( u'<?xml version="1.0" encoding="ISO-8859-1"?>' u'<children title_tpl=%s title=%s ' u'loading_msg=%s>%s</children>', title, title, loading, result)
def exportXlsData(self): """get XLS file for all folder objects""" filename = datetime.now().strftime('ict_%Y%m%d%H%M%S.xls') f_handle, f_name = tempfile.mkstemp(filename) wbook = Workbook() wb_hosts = wbook.add_sheet('ddd') style0 = XFStyle() font0 = Font() font0.height = 6 * 20 style0.num_format_str = '@' style0.font = font0 style1 = XFStyle() font1 = Font() font1.height = 6 * 20 style1.num_format_str = '@' style1.font = font1 heading_pattern = xl.Pattern() heading_pattern.pattern = xl.Pattern.SOLID_PATTERN heading_pattern.pattern_back_colour = 0x5 heading_pattern.pattern_fore_colour = 0x5 fields = self.fields attrList = [fname for fname, fval in fields.items()] itemList = self.context.items() pos_y = 0 pos_x = 0 for attr in attrList: wb_data = Formula(u'"%s"' % attr) style0.pattern = heading_pattern wb_hosts.write(pos_y, pos_x, wb_data, style0) pos_x += 1 # IntID wb_data = Formula(u'"IntID"') wb_hosts.write(pos_y, pos_x, wb_data, style0) pos_x += 1 # objectID wb_data = Formula(u'"objectID"') wb_hosts.write(pos_y, pos_x, wb_data, style0) wb_hosts.col(pos_x).width *= 3 pos_x += 1 pos_y = 1 # allAttributes = {} for interface in implementedBy(self.factory): for i_attrName in interface: i_attr = interface[i_attrName] if IField.providedBy(i_attr): allAttributes[i_attrName] = i_attr # for item_n, item_v in itemList: pos_x = 0 for attr in attrList: # from zope.interface import implementedBy # ff=self.factory # tt=[i for i in implementedBy(ff)] # it=tt[-1] #attrField = self.attrInterface[attr] attrField = allAttributes[attr] # tmpFieldProperty = getattr(self.factory, attr) # if hasattr(tmpFieldProperty, '_FieldProperty__field'): # attrField = getattr(self.factory, attr)._FieldProperty__field attrDm = datamanager.AttributeField(item_v, attrField) v_style = XFStyle() v_font = Font() v_font.height = 6 * 20 v_style.font = v_font value = None if IChoice.providedBy(attrField): v_style.num_format_str = '@' dateValue = attrDm.get() v_widget = getMultiAdapter(\ (attrField,self.request), interfaces.IFieldWidget) v_widget.context = item_v # dm = zope.component.getMultiAdapter( # (self.content, field.field), interfaces.IDataManager) # zope.component.getMultiAdapter( # (self.context, # self.request, # self.form, # getattr(widget, 'field', None), # widget), # interfaces.IValidator).validate(fvalue) # dm = zope.component.getMultiAdapter( # (self.__context__, field), interfaces.IDataManager) v_dataconverter = queryMultiAdapter(\ (attrDm.field, v_widget), interfaces.IDataConverter) #print u"ddd55: %s: %s" % (attr, dateValue) if dateValue is not None: value = v_dataconverter.toWidgetValue(dateValue)[0] #print "value3-> %s: %s " % (attr, value) # elif ICollection.providedBy(attrField): # v_style.num_format_str = '@' # value = getattr(item_v, attr) # print "ddd66: %s: %s" % (attr, value) # elif IBool.providedBy(attrField): # v_style.num_format_str = '@' # value = getattr(item_v, attr) # print "value2-> %s: %s " % (attr, value) else: v_style.num_format_str = '@' dateValue = attrDm.get() v_widget = getMultiAdapter(\ (attrField,self.request), interfaces.IFieldWidget) v_widget.context = item_v v_dataconverter = queryMultiAdapter(\ (attrDm.field, v_widget), interfaces.IDataConverter) #d2 = queryMultiAdapter((attrDm.field, v_widget),interfaces.IDataConverter) if dateValue is not None: value = v_dataconverter.toWidgetValue(dateValue) if type(value) is list: value = u";".join(value) #print u"value1-> %s: %s " % (attr, value) if value is not None: #print u"wb_hosts.write(%s, %s, %s, %s)" % (pos_y, pos_x, value, v_style) wb_hosts.write(pos_y, pos_x, value, v_style) pos_x += 1 # IntID uidutil = queryUtility(IIntIds) wb_data = Formula(u'"%s"' % uidutil.getId(item_v)) wb_hosts.write(pos_y, pos_x, wb_data, style0) pos_x += 1 # objectID wb_data = Formula(u'"%s"' % item_v.objectID) wb_hosts.write(pos_y, pos_x, wb_data, style0) pos_x += 1 pos_y += 1 wbook.save(f_name) self.request.response.setHeader('Content-Type', 'application/vnd.ms-excel') self.request.response.setHeader(\ 'Content-Disposition', 'attachment; filename=\"%s\"' % filename) setNoCacheHeaders(self.request.response) datafile = open(f_name, "r") dataMem = datafile.read() datafile.close() os.remove(f_name) return dataMem