LabVIEWForum.de
Die letzten 10 Zeilen einer Datei auslesen - 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: Die letzten 10 Zeilen einer Datei auslesen (/Thread-Die-letzten-10-Zeilen-einer-Datei-auslesen)

Seiten: 1 2


Die letzten 10 Zeilen einer Datei auslesen - thomhof0 - 29.06.2006 07:07

Hallo,
ich möchte die letzten 10 Zeilen einer Datei auslesen.
Kann ich mir anzeigen lassen, wie viele Zeilen eine Datei enthält?


Die letzten 10 Zeilen einer Datei auslesen - Achim - 29.06.2006 07:36

Hi,

was denn für ne Datei? Was steht da drin (Wie)?

Man kann die Dateigröße ermittlen (File IO >> Fortgeschritten), aber um die Anzahl Zeilen in einer Datei (ich schätze mal *.txt ?) muss glaub ich eh (im Hintergrund) die Datei abgegrast werden. Da kann man die Datei auch komplett einlesen, sich z.B. mit den Stringfunktionen die letzten CRLF (Carriage Return Line Feed - Zeilenumbrüche) suchen und den Rest verwerfen. Oder bei Zahlen: Read from Spreadsheet (Aus Tabellenkalkulationsdatei lesen) in ein Array und mit den Arrayfunktionen die gewünschten Zeilen extrahieren.

Gruss
Achim


Die letzten 10 Zeilen einer Datei auslesen - thomhof0 - 29.06.2006 07:58

Ich speichere sie als txt ab, importiere sie aber später in excell, benötige aber vorher in LabVIEW die letzten 10 Zeilen. Datei ist leider immer unterschiedlich groß.

Eine Zeile sieht so aus:

Mittwoch, 28. Juni 2006 23:50:58 15711 100.260.000 28.250.000 28.010.000 4.120.000 2.850.000 0 1.000.000 8.44E+05 2.40E+05 8.32E+05 2.40E+05 8.41E+05 2.39E+05 2.40E+05 8.39E+05 4.53E+08 6.03E+08 3.99E+08 7.51E+02 4.14E+05 3.38E+05 8.65E+05 5.33E+05 Inf 30.593.467

Datei ist ca. 6 MB groß (über 16000 Zeilen), deswegen wollte ich sie nicht ganz laden.


Die letzten 10 Zeilen einer Datei auslesen - Achim - 29.06.2006 08:40

Hi,

hab grad mal mit nem Kollegen "konferiert"...vermutlich wird das nicht funktionieren...das geht nur bei ner Binärdatei, dort kann man an verschiedene Positionen springen und ne gewisse Länge lesen!

Bei txt-Dateien sind die Zeilen aber meist unterschiedlich lang, darum muss man auf jeden Fall nach dem Zeilentrennzeichen (z.B. EOL) suchen!

Kannst du nicht deine Datenspeicherung anders organisieren? Z.B. mehrere Dateien schreiben, die nur vielleicht 500kByte groß sind?

Gruss
Achim


Die letzten 10 Zeilen einer Datei auslesen - thomhof0 - 29.06.2006 08:53

Danke Achim!
Die Datei wird von einer einzigen Schleife erstellt, die sich ungefähr 16000 mal wiederholt, bis dann der Sollzustand eintritt. Ich werde dann mal Versuchen die ganze Datei zu laden, dann den String umdrehen und so dann die ersten Zeilen auslesen. Falls du eine bessere Lösung hast, kannst du sie mir gerne mitteilen.

MfG
Thomas


Die letzten 10 Zeilen einer Datei auslesen - Lucki - 29.06.2006 09:21

Wenn die Datei nicht so riesengroß ist, daß LabVIEW beim Einlesen aussteigt, dann würde ich die Datei als Ganzes einlesen, und zwar als Stringvektor, und davon die letzten 10 Elemente auswählen. Wenn Dich die Vektordarstellung stört, kannt Du den Vektor natürlich auch wieder in normalen Text konvertieren. So ungefähr wie hier:


Die letzten 10 Zeilen einer Datei auslesen - Achim - 29.06.2006 09:31

Hi,

ich hab mir aus den Zeilen, die thomhof0 gepostet hat, spaßeshalber mal ne ca. 20MB-Datei gebaut...LV hat so ca. 5 Minuten gebraucht, um das in ein Stringfeld zu lesen...uiuiuiuiuiui...diesen String dann auch nocht zu drehen...LV macht schon Mücken, wenn ich nur das Anzeigeelement, in dem der eingelesene String liegt, auf dem FP verschieben will...

Ich würde hier auf jeden Fall mehrere Dateien schreiben (wenn > x, dann neuer Index (Datei_1, Datei_2, Datei_n), oder eben Binärdateien, die brauchen auch nicht so viel Platz!

Gruss
Achim


Die letzten 10 Zeilen einer Datei auslesen - Lucki - 29.06.2006 10:31

Hier noch ein Vi, welches das Zwischenspeichern der ganzen Datei vermeidet. Es wird nur immer ein Zeile eingelesen, und das Schiebregister hat am zum Schluß die letzten 10 Zeilen gespeichert. Probiere das mal aus. Falls das Schiebregister zu langsam ist, besteht die Möglichkeit, das ohne Schiebregister, aber in zwei Durchläufen, zu machen. Beim ersten Mal wird nur die Anzahl der Zeilen festgestellt, im zweiten Durchlauf werden die letzten 10 Zeilen gelesen.


Die letzten 10 Zeilen einer Datei auslesen - thomhof0 - 29.06.2006 11:19

Nochmal danke für eure Mühe!
Ich habe auch noch ein bisschen ausprobiert und bin zu dieser Lösung gekommen:

[attachment=2448]


Die letzten 10 Zeilen einer Datei auslesen - Peter.Zeitz - 29.06.2006 11:36

' schrieb:Ich speichere sie als txt ab, importiere sie aber später in excell, benötige aber vorher in LabVIEW die letzten 10 Zeilen. Datei ist leider immer unterschiedlich groß.

Eine Zeile sieht so aus:

Mittwoch, 28. Juni 2006 23:50:58 15711 100.260.000 28.250.000 28.010.000 4.120.000 2.850.000 0 1.000.000 8.44E+05 2.40E+05 8.32E+05 2.40E+05 8.41E+05 2.39E+05 2.40E+05 8.39E+05 4.53E+08 6.03E+08 3.99E+08 7.51E+02 4.14E+05 3.38E+05 8.65E+05 5.33E+05 Inf 30.593.467

Datei ist ca. 6 MB groß (über 16000 Zeilen), deswegen wollte ich sie nicht ganz laden.

Hallo Thomas,

kannst du die Datei mit "Aus Tabellenkalkulationsdatei lesen" öffnen? Das sollte eigentlich gehen. Wenn ja, musst du nur noch die Array-Größe ermitteln und die letzten zehn Zeilen mit "Teilarray" rausholen.
Der Rest ist dann wohl klar.

Gruß
Peter