¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Aquí está mi código:
path = "/users/BOT/Test_files/";
Set File Search Path( mypath );
// filter out all csv files in the path that contains "Pass" && Not contains "Conditional_Pass" or "Fail" in file name
y = Files In Directory( mypath );
For( i = N Items( y ), i > 0, i--,
If( (Ends With( y[i], ".csv" ) & Contains( y[i], "Pass" ) & Not( Contains( y[i], "Conditional_Pass" ) ) & Not( Contains( y[i], "Fail" ) )),
,
Remove From( y, i )
)
);
n = N Items( y );
Sigue apareciendo el siguiente error como captura de pantalla, ¿se debe a que la función Archivos en directorio () está obsoleta?
Lo curioso es que los códigos anteriores solían funcionar con JMP16; el siguiente error aparece después de actualizar a JMP17 ayer.

Acceso a datosRe: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Lo más probable es que recibas ese error porque estás eliminando la misma lista sobre la que estás haciendo un bucle. Para este tipo de filtrado, te sugiero que uses Filter Each en lugar de For loop.
Además, ¿ha intentado utilizar la importación de múltiples archivos ?
Re: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Por favor, comprueba path vs. mypath
Además de eso, puedes usar Filter Each en lugar del bucle for :
//path = "/users/BOT/Test_files/";
mypath = "/users/BOT/Test_files/";
y = Files In Directory( mypath );
y = filter each({fn}, y, Ends With( fn, ".csv" ) & Contains( fn, "Pass" ) & Not( Contains( fn, "Conditional_Pass" ) ) & Not( Contains( fn, "Fail" ) ) )Re: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?También puede dar el siguiente paso y actualizar a JMP18, con la opción de utilizar una lista de archivos en MultiFileImport.
¡En algunos casos, esto acelerará la importación de datos en órdenes de magnitud!
y= Transform each ({fn}, y, mypath || fn);
Eval(Eval Expr (Multiple File Import(
<<SET use="" file="" list=""></SET><BR />At the moment, Filelist + <FONT face="courier new,courier">Importación de archivos múltiples</FONT> needs the complicate <FONT face="courier new,courier">Eval(Eval Expr(... Expr() ...))</FONT>.<BR />This will get fixed in a future release of JMP.
Re: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Creo que tienes una tabla de datos abierta con una columna llamada Y. JSL está intentando usar la columna de la tabla, que no es lo que quieres. Cierra la tabla, cambia el nombre en la tabla o en el script, o usa el alcance para indicarle a JMP a qué te refieres.
Este ejemplo inicia JMP desde cero antes de que Y esté en cualquier espacio de nombres.

@Audrey_Shull - Ese cuadro de diálogo de error mejoraría un 100% si nombrara la tabla de donde proviene la variable.
Re: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Gracias Craige, sí encontré mi error hace un día y lo resolví, tal como tu descripción.
Re: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Gracias cerdo, el filtro de cada función también me da algo de inspiración.
Re: ¿Cómo puedo recorrer varios archivos csv y seleccionarlos en función de un nombre de archivo específico?Hola jthi, gracias.
Estoy de acuerdo en que la importación de múltiples archivos es una buena forma de analizar los archivos, más rápido que mi método actual.