Ciclo per l'apertura di file, la modifica del nome di una colonna e il salvataggio nel formato originaleCiao a tutti,
Ho provato ad assemblare uno script per aprire una serie di file (.dx) e modificare il testo da una delle colonne su ciascun file. Riesco a farlo funzionare individualmente per uno o due file, ma se provo un set di quattro inizia un ciclo infinito. Qualcuno può aiutare? È possibile che il problema riguardi i file, ma vorrei prima esaminare lo script poiché sono un principiante in jsl. Idealmente, vorrei salvare i file non come jmp ma anche come dx.
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";
);
);
) );ScriptingRi: Loop per aprire file, cambiare il nome di una colonna e salvare nel formato originaleHo annotato lo script qui sotto con i problemi che ho riscontrato.Sono sorpreso che tu possa leggere in un file .dx.JMP certamente non supporta la scrittura di file .dx (per quanto ne so).
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"
);
);
);
);Re: Loop per aprire file, cambiare il nome di una colonna e salvare nel formato originaleNon sono sicuro di cosa sia dx, ma puoi salvare con l'estensione .csv e probabilmente essere vicino.
Ri: Loop per aprire file, cambiare il nome di una colonna e salvare nel formato originaleGrazie Craige, ora funziona con tutti i file e senza errori! Qualche idea su come salvare nel formato originale (.dx) e preferibilmente preservare il nome del file?
Ri: Loop per aprire file, cambiare il nome di una colonna e salvare nel formato originale1) riformatta il tuo JSL usando il popup del tasto destro dell'editor. Sarai in grado di vedere meglio la nidificazione.
2) stai riutilizzando la variabile i nel ciclo interno. Questo sta causando il loop.
3) rimuovere il wrapper try() o fargli fare qualcosa quando rileva un errore.