Schleife zum Öffnen von Dateien, Ändern eines Spaltennamens und Speichern im OriginalformatHallo alle,
Ich habe versucht, ein Skript zum Öffnen einer Reihe von Dateien (.dx) und zum Ändern des Textes in einer der Spalten jeder Datei zusammenzustellen. Ich schaffe es, dass es für ein oder zwei Dateien einzeln funktioniert, aber wenn ich es mit einem Satz von vier Dateien versuche, beginnt eine Endlosschleife. Kann mir bitte jemand helfen? Es besteht die Möglichkeit, dass das Problem bei den Dateien liegt, aber ich möchte zuerst das Skript überprüfen, da ich ein JSL-Neuling bin. Idealerweise möchte ich die Dateien nicht als JMP, sondern auch als DX speichern.
Files = Pick File( "Select File(s)", "G:\Retention Compliant\Research\Analytical\Projects\IR database", {"All Files|*"}, 1, 0, "", "multiple" );
For( i = 1, i <= N Items( Files ), i++,
Try( dt = Open( Files[i], "text" ) );
wait( 0 );
For( n = 1, n <= N Items (Files), n++,
colList = dt << get column names( character, string );
For( i = 1, i <= N Items( colList ), i++,
selRows = dt << get rows where(
Column( dt, colList[i] )[Row()] == "##YUNITS= % Transmittance" | Column( dt, colList[i] )[Row()] == "##YUNITS= % T"
);
If( N Rows( selRows ) > 0,
Column( dt, colList[i] )[selRows] = "##YUNITS= % T";
);
);
) );Automatisierung und SkripterstellungBetreff: Schleife zum Öffnen von Dateien, Ändern eines Spaltennamens und Speichern im OriginalformatIch habe das Skript unten mit den gefundenen Problemen versehen.Ich bin überrascht, dass Sie eine .dx-Datei einlesen können.JMP unterstützt das Schreiben von .dx-Dateien sicherlich nicht (soweit ich weiß).
Files = Pick File(
"Select File(s)",
"G:\Retention Compliant\Research\Analytical\Projects\IR database",
{"All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
// Open one file
Try( dt = Open( Files[i], "text" ) );
Wait( 0 );
// Loop from 1 to the number of files (even though only 1 file has been opened)
For( n = 1, n <= N Items( Files ), n++,
// Here you will be reading the column names in for the first file over and over
colList = dt << get column names( character, string );
// Loop using "i" as the index across all of the columns....in the first file
// since that is all we have read in.....but since you are using "i", you will
// be creating an infinate loop, since you are using "i" for the first loop
// and you will be interferring with the assumed stepping for the outter loop
For( i = 1, i <= N Items( colList ), i++,
selRows = dt << get rows where(
// You are not in a formula, so the Row() function will not provide a predictable result
Column( dt, colList[i] )[Row()] == "##YUNITS= % Transmittance" | Column( dt, colList[i] )[Row()] ==
"##YUNITS= % T"
);
If( N Rows( selRows ) > 0,
Column( dt, colList[i] )[selRows] = "##YUNITS= % T"
);
);
);
);Betreff: Schleife zum Öffnen von Dateien, Ändern eines Spaltennamens und Speichern im OriginalformatIch bin mir nicht sicher, was dx ist, aber Sie können mit der Erweiterung .csv speichern und sind wahrscheinlich in der Nähe.
Betreff: Schleife zum Öffnen von Dateien, Ändern eines Spaltennamens und Speichern im OriginalformatDanke Craige, es funktioniert jetzt mit allen Dateien und ohne Fehler! Irgendwelche Ideen, wie man im Originalformat (.dx) speichert und vorzugsweise den Dateinamen beibehält?
Betreff: Schleife zum Öffnen von Dateien, Ändern eines Spaltennamens und Speichern im Originalformat1) Formatieren Sie Ihre JSL mithilfe des Editor-Rechtsklick-Popups neu. Dadurch können Sie die Verschachtelung besser erkennen.
2) Sie verwenden die Variable i in der inneren Schleife wieder. Das verursacht die Schleife.
3) Entfernen Sie den try()-Wrapper oder veranlassen Sie ihn, etwas zu tun, wenn ein Fehler auftritt.