Comment puis-je parcourir plusieurs fichiers CSV et les sélectionner en fonction d'un nom de fichier spécifique ?Voici mon code:
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 );
Vous continuez à recevoir l’erreur ci-dessous sous forme de capture d’écran, est-ce parce que la fonction Files In Directory() est obsolète ?
Le plus drôle, c'est que les codes ci-dessus fonctionnaient pour JMP16, l'erreur ci-dessous apparaît après la mise à niveau vers JMP17 hier.

Accès aux donnéesRe : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?Vous obtenez probablement cette erreur lorsque vous supprimez la même liste sur laquelle vous effectuez une boucle. Pour ce type de filtrage, je suggère d'utiliser Filter Each au lieu de For loop.
Avez-vous également essayé d’utiliser l’importation de fichiers multiples ?
Re : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?veuillez vérifier le chemin par rapport à mon chemin
en plus de cela, vous pouvez utiliser Filter Each au lieu de la boucle 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 : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?Vous pouvez également passer à l’étape suivante et passer à JMP18, avec la possibilité d’utiliser une liste de fichiers dans MultiFileImport.
Dans certains cas, cela accélérera l’importation des données de plusieurs ordres de grandeur !
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">Importation de fichiers multiples</FONT> needs the complicate <FONT face="courier new,courier">Éval(Éval Expr(... Expr() ...))</FONT>.<BR />This will get fixed in a future release of JMP.
Re : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?Je pense que vous avez une table de données ouverte avec une colonne nommée Y. JSL essaie d'utiliser la colonne de la table, ce qui n'est pas ce que vous voulez. Fermez la table, ou modifiez le nom dans la table ou dans le script, ou utilisez la portée pour indiquer à JMP ce que vous voulez dire.
Cet exemple démarre JMP avant que Y ne soit dans un espace de noms.

@Audrey_Shull - Cette boîte de dialogue d'erreur serait améliorée à 100 % si elle nommait la table d'où provient la variable.
Re : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?Merci Craige, oui j'ai trouvé mon bug il y a un jour et je l'ai résolu, tout comme ta description.
Re : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?Merci hog, le filtre de chaque fonction me donne également un peu d'inspiration.
Re : Comment puis-je parcourir plusieurs fichiers csv et les sélectionner en fonction d'un nom de fichier spécifique ?Hé jthi, merci.
Je suis d'accord, l'importation de fichiers multiples est un bon moyen d'analyser les fichiers, plus rapide que ma méthode actuelle.