Wie lese ich eine Textdatei Zeile für Zeile ein?Mit dem folgenden Code ist es möglich, ein JSL-Skript Zeile für Zeile einzulesen (eigentlich erstellt JMP eine Liste mit jeder Zeile als Listenelement).
myFile= open("$PATH\testScript.jsl");
myCfLines = myFile[scriptBox(1)] << getLines();
Wenn ich dies jedoch mit einer Textdatei versuche, die die Erweiterung „*.txt“ hat, öffnet JMP diese automatisch als Datentabelle und daher kann ich diese Methode nicht verwenden, um die Zeilen abzurufen (da es sich nicht um ein Skriptfeld handelt!)
Gibt es eine andere Methode? Ich möchte die Funktion „loadTextFile()“ nicht verwenden, da dadurch die gesamte Datei in eine Zeichenfolge umgewandelt wird. Idealerweise würde ich die Datei öffnen, jede Zeile einzeln einlesen und einen regulären Ausdruck ausführen, um die benötigten Daten abzurufen!
Betreff: Wie lese ich eine Textdatei Zeile für Zeile ein?JMP streamt nicht über die Textdatei. Sie müssten die Lösung verwenden, um die gesamte Datei zu laden und dann die Zeilen zu trennen. Sie können die Elemente in der Liste (einzelne Zeilen) durchlaufen, um festzustellen, ob sie Ihr Kriterium erfüllen.
Alternativ können Sie die Textdatei in eine Excel-Arbeitsmappe importieren und dann über Datei > Datenbank > Tabelle öffnen oder Datei > Datenbank > Abfrage-Generator die WHERE-Klausel definieren, um die Zeilen auszuwählen, die Sie extrahieren möchten.
Betreff: Wie lese ich eine Textdatei Zeile für Zeile ein?Ich habe eine große Textdatei, möchte aber nur ein paar Zeilen lesen und laden. Grundsätzlich möchte ich alle Zeilen laden, die mit A_ oder B_ oder C_ oder D_ beginnen. Kann die Bedingung funktionieren?
Betreff: Wie lese ich eine Textdatei Zeile für Zeile ein?In diesem Punkt muss ich Jeff meinen Dank aussprechen, trotz meiner anfänglichen Zurückhaltung gegenüber der Funktion „loadTextFile“. Da alle drei Methoden funktionieren, habe ich einen kurzen Zeitvergleich mit einer Textdatei mit 250 MB und 5 MB Zeilen von einem unserer Tester durchgeführt. Mein Anwendungsfall besteht übrigens darin, dass ich diese riesigen Protokolldateien Zeile für Zeile durchsuchen und einige Ergebnisse basierend auf einer Tabelle mit regulären Ausdrücken herausfiltern muss.
Ich nehme an, das ist nicht fair, da ich gesagt habe, dass ich LoadTextFile meiden wollte 
***Ian ***
myNumSeconds = 66;
N Items(myCfLines) = 5059756;
***Jeff ***
myNumSeconds = 7;
N Items(myLines) = 5059755;
*** Craige ***
myNumSeconds = 67;
N Items(myCfLines) = 5059756;
Betreff: Wie lese ich eine Textdatei Zeile für Zeile ein?Es gibt eine „Skript“-Option, die Sie öffnen können, damit dies funktioniert:
open("$sample_data/../Import Data/bigclass.txt","script")
Anstatt jetzt als „Text“ zu öffnen (was die Erweiterung .txt standardmäßig vorgibt) und eine Datentabelle zu erstellen, wird es in einem Skriptfenster geöffnet. Ja, die Option „Text“ hat einen seltsamen Namen, bezieht sich aber auf CSV-Text.
Betreff: Wie lese ich eine Textdatei Zeile für Zeile ein?JSL verfügt derzeit nicht über Tools zum Öffnen einer Datei und zum zeilenweisen Lesen.
Wenn Sie jedoch verwenden Textdatei laden() Dann können Sie das verwenden Wörter() Funktion, um die einzelnen Zeilen in eine Liste einzufügen.
bctxt=load text file ("$SAMPLE_IMPORT_DATA\Bigclass.txt");
lines=words(bctxt,"\!n");
Betreff: Wie lese ich eine Textdatei Zeile für Zeile ein?Wie Sie sehen, verwendet JMP die Dateierweiterungen, um zu versuchen, etwas Angemessenes zu tun.
Ich bin mir nicht sicher, ob ich Ihren Anwendungsfall vollständig verstehe, aber wenn eine „.jsl“-Erweiterung das gewünschte Verhalten liefert, könnten Sie die Verwendung von „RenameFile()“ in Betracht ziehen:
renameFile("$DESKTOP/Test.txt", "Test.jsl");
myFile = open("$DESKTOP/Test.jsl");
myCfLines = myFile[scriptBox(1)] << getLines();
renameFile("$DESKTOP/Test.jsl", "Test.txt");