LabVIEWForum.de
Spalte aus *.txt lesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Spalte aus *.txt lesen (/Thread-Spalte-aus-txt-lesen)



Spalte aus *.txt lesen - Neska - 06.05.2013 10:58

Hallo,

ich möchte gerne eine einzelne Spalte von Tab-getrennten Werten aus einer *.txt lesen.
[attachment=44564]
Bisher habe ich es nur so lösen können, dass ich alle Werte einer Zeile lese, bis ich zur gewünschten Spalte gelangt bin.
[attachment=44562]
[attachment=44563]
Das scheint mir bei Textdokumenten mit mehreren GB Datenvolumen nicht optimal.

Weiß jemand eine schlauere Lösung?
Kann man ein Textdokument vielleicht vorher, wie bei einer Matrix, transponieren.
Bitte beachtet, dass es mir nicht möglich ist, das Textdokument in einem Array zwischenzuspeichern, da es sehr große Dimensionen annimmt.

LG
Neska


RE: Spalte aus *.txt lesen - jg - 06.05.2013 11:17

(06.05.2013 10:58 )Neska schrieb:  Kann man ein Textdokument vielleicht vorher, wie bei einer Matrix, transponieren.
Nein!

Somit bleibt dir nur deine Lösung:
(06.05.2013 10:58 )Neska schrieb:  Bisher habe ich es nur so lösen können, dass ich alle Werte einer Zeile lese, bis ich zur gewünschten Spalte gelangt bin.

Das scheint mir bei Textdokumenten mit mehreren GB Datenvolumen nicht optimal.
Das könnte man natürlich etwas optimieren, z.B. immer 10/100/1000 Zeilen auf einen Schwung einlesen ("Read from Text File" mit der Option "Read Lines" aktiv), dann mit SpreadsheetString to Array in Zahlen konvertieren und sich die entsprechende Spalte rausholen. Der Rest wird verworfen.

(06.05.2013 10:58 )Neska schrieb:  Weiß jemand eine schlauere Lösung?
Wenn es wirklich um so gigantische Datenmengen geht, dann auf ein anderes Datenformat umsteigen, z.B. tdms oder eine Datenbank!

Gruß, Jens


RE: Spalte aus *.txt lesen - Lucki - 06.05.2013 13:20

(06.05.2013 10:58 )Neska schrieb:  Das scheint mir bei Textdokumenten mit mehreren GB Datenvolumen nicht optimal.
Weiß jemand eine schlauere Lösung?
Man darf sich das zeilenweise Lesen aber nicht so vorstellen, dass da für jede Zeile ein Lesevorgang auf der Festplatte stattfindet. Sowohl auf der Festplatte als auch im Betriebssystem hat man da sehr große Caches. Das Lesen aller Zeilen einzeln kann damit fast genau so schnell sein wie das Lesen der ganzen Datei auf einmal. Hast Du es denn wirklich mal für eine sehr große Datei probiert? (Das häppchenweise Lesen, welches Jens als Option vorschlägt - das ist genau das, was das Betriebssystem schon von sich aus macht).
Schlauer allerdings könnte ich mir das Herausklauben der Spalte aus der Zeile vorstellen. Ich würde mir von dieser anderen Methode einen Geschwindigkeitsvorteil versprechen:
[attachment=44569]
Deine txt-Datei endet mit einer Leerzeile. Das erfordert noch eine Modifikation, damit man nicht als letzten Wert eine zusätzliche Null im Array hat.


RE: Spalte aus *.txt lesen - BerndDasBrot - 06.05.2013 16:28

Hallo
Ich habe noch einen Vorschlag mit "Read from Spreadsheet file"

Gruss, BDB