Déboguer un fichier JSL pour Dat ouvert et modifié puis enregistrer pour fermerTout le monde peut aider à réparer le jsl ci-dessous,
Le but est d'ouvrir tous les fichiers dat sous le même répertoire et de supprimer 2 lignes, puis de les enregistrer.
Merci
directory = Pick Directory();
fileNames = Files In Directory( directory );
For( iFile = 1, iFile <= N Items( fileNames ), iFile++,
filename = fileNames[iFile];
If( Ends With( filename, ".dat" ),
dt = Open( directory || filename );
//delete first 2 rows
dt << Select Where( Row() < 3 );
dt << delete rows;
Close( dt, "save" );
);
);
ScriptRe : Déboguez un fichier JSL pour Dat, ouvrez-le et modifiez-le, puis enregistrez-le pour le fermerJ'ai corrigé le bogue en faisant la modification ci-dessous,
If( Right( y[i], 3 ) == "dat", ...............
Merci beaucoup
Re : Déboguez un fichier JSL pour Dat, ouvrez-le et modifiez-le, puis enregistrez-le pour le fermerMerci Jim, Morgon.
J'ai utilisé la méthode étape par étape pour vérifier la boucle, et il s'avère que le problème se produit lors de l'ouverture du fichier .dat.
Il n'y a pas de réponse après avoir exécuté open .dat.
Je le change pour ouvrir .txt et cela fonctionne bien.
Avez-vous une idée de pourquoi cela se produit et comment y remédier?
Merci
Re : Déboguez un fichier JSL pour Dat, ouvrez-le et modifiez-le, puis enregistrez-le pour le fermer@Stokes ,
Jim vous a donné d'excellentes suggestions de débogage. Vous trouverez ci-dessous quelques remarques/problèmes potentiels. Comme Jim l'a suggéré, les erreurs dans le LOG ou une description de votre tâche et de ce qui se passe lorsque vous exécutez le script seraient informatives.
- Au lieu de select where() et delete, vous pouvez utiliser dt << delete rows(1::2);
- J'utilise souvent wait( 0 ); après la sauvegarde, pour forcer sa fin avant de continuer.
- Votre script recherche des fichiers avec .DAT extension, qui est un type de fichier générique. Vous le lisez dans la table de données JMP, puis scriptez un ENREGISTRER .Cela a plusieurs problèmes potentiels, des conséquences inattendues :
- Le type de fichier peut nécessiter plus de détails pour être lu correctement, de sorte que l'ouverture peut provoquer une erreur.
- En supposant que le fichier est lu correctement dans une table de données JMP, un ENREGISTRER enregistrera le fichier en tant que fichier .JMP. Est-ce votre intention? ou voulez-vous l'enregistrer en tant que .DAT dossier?Souvent, lorsque les utilisateurs posent ce type de question, ils souhaitent utiliser JMP pour nettoyer un fichier de données écrit par un outil de métrologie automatisé qui contient des informations d'en-tête dans un format différent. Ces informations d'en-tête peuvent provoquer des erreurs Open() et d'autres problèmes. Ainsi, la connaissance de la tâche aidera la communauté JMP à fournir une solution. Selon la tâche, un Charger le fichier texte() ou Ouvert() avec les options d'importation de texte peut être nécessaire.
- Si la réponse au Choisissez le répertoire() prompt est un répertoire accessible en lecture mais pas en écriture, cela peut provoquer une erreur ou le fichier est enregistré dans un répertoire non souhaité. Par exemple, si je modifie votre script pour lire les fichiers .TXT et choisir le répertoire pour JMP Samples/Import Data, le programme lira les fichiers .txt mais les enregistrera en tant que fichiers .JMP, mais pas dans le répertoire JMP Samples/Import Data car il n'est pas inscriptible.
Ces éléments sont destinés à aider à clarifier le type de détails qui sont nécessaires pour vous aider.
Re : Déboguez un fichier JSL pour Dat, ouvrez-le et modifiez-le, puis enregistrez-le pour le fermerAvez-vous des erreurs dans le journal ?Si c'est vrai, que sont-ils?
Je soupçonne que Select Where s'exécute trop tôt, car le fichier s'ouvre, ce que JMP fera en arrière-plan.Essayez de mettre la ligne
dt << rerun formulas;
après open() et voyez si cela fonctionne.
Ce que je fais habituellement avec un code comme celui-ci, c'est d'exécuter les lignes 1 et 2. Trouvez le premier fichier qui se termine par .dat et définissez votre "nom de fichier" sur sa valeur, puis exécutez une à la fois les lignes d'ouverture, de sélection, de suppression et de fermeture pour voir ce qui se passe.