2017-02-14 4 views
2

Мне нужно прочитать большие данные из временного файла в Spotfire с помощью IronPython.Как читать большие данные из временного файла в Spotfire с помощью IronPython

Сначала я экспортировал свою таблицу данных Tibco в временном файле, используя метод вывезенного текста():

#Temp file for storing the TablePlot data 
tempFolder = Path.GetTempPath() 
tempFilename = Path.GetTempFileName() 

#Export TablePlot data to the temp file 
tp = tablePlotViz.As[TablePlot]() 
writer = StreamWriter(tempFilename) 
tp.ExportText(writer) 

После этого открыл временный файл с помощью метода Open().

f = open(tempFilename) 

Теперь, когда я начал читать данные из открытого файла и записать обратно в строковой переменной, то она занимает слишком много времени. И мой экран Spotfire перестает работать.

У кого-нибудь есть идея?

Моя таблица данных размером 8 МБ.

Кодекс:

from Spotfire.Dxp.Application.Visuals import TablePlot, HtmlTextArea 

import clr 
import sys 
clr.AddReference('System.Data') 
import System 
from System.Data import DataSet, DataTable, XmlReadMode 
from Spotfire.Dxp.Data import DataType, DataTableSaveSettings 
from System.IO import StringReader, StreamReader, StreamWriter, MemoryStream, SeekOrigin, FileStream, FileMode,Path, File 
from Spotfire.Dxp.Data.Export import DataWriterTypeIdentifiers 
from System.Threading import Thread 
from Spotfire.Dxp.Data import IndexSet 
from Spotfire.Dxp.Data import RowSelection 
from Spotfire.Dxp.Data import DataValueCursor 
from Spotfire.Dxp.Data import DataSelection 
from Spotfire.Dxp.Data import DataPropertyClass 
from Spotfire.Dxp.Data import Import 

from Spotfire.Dxp.Data.Import import TextFileDataSource, TextDataReaderSettings 
from System import Array 
from Spotfire.Dxp.Application.Visuals import VisualContent 
from Spotfire.Dxp.Application.Visuals import TablePlot 
from System.IO import Path, StreamWriter 
from System.Text import StringBuilder 


#Temp file for storing the TablePlot data 
tempFolder = Path.GetTempPath() 
tempFilename = Path.GetTempFileName() 

#Export TablePlot data to the temp file 
tp = tablePlotViz.As[TablePlot]() 
writer = StreamWriter(tempFilename) 
tp.ExportText(writer) 

#Build the table 
sb = StringBuilder() 

#Open the temp file for reading 
f = open(tempFilename) 

#build the html table 
html = " <TABLE id='table' style='display:none;'>\n" 
html += "<THEAD>" 
html += " <TR><TH>" 
html += " </TH><TH>".join(f.readline().split("\t")).strip() 
html += " </TH></TR>" 
html += "</THEAD>\n" 
html += "<TBODY>\n" 

for line in f: 
    html += "<TR><TD>" 
    html += "</TD><TD>".join(line.split("\t")).strip() 
    html += "</TD></TR>\n" 


#Assigned the all HTML data in the text area 
print html 

код прекрасно работает с короткими данными.

ответ

0

Если я получаю правильно, замысел, лежащий в основе кода, считывает данные визуализации таблицы Plot в строку, для дальнейшего использования в текстовой области HTML. Существует альтернативный способ сделать это, не записывая данные во временный файл. Мы можем использовать поток памяти для экспорта данных и преобразования экспортированного текста в строку для дальнейшего повторного использования. Код примера можно отнести от here.

+0

Спасибо Vivek. Конечно, я попробую это и дам вам знать результаты :) – Aashi

Смежные вопросы