Hängen Sie Textdateien anHallo an alle,
Ich habe einen Ordner, der 2800 Textdateien enthält. Jede Textdatei hat 3 Spalten. Ich möchte alle diese Textdateien in einer einzigen JMP-Datei zusammenfassen können (indem ich eine Verknüpfung nach Zeilennummer durchführe). Diese JMP-Datei hätte daher 2800*3 Spalten.
Bemerkungen :
Bevor alle Dateien zusammengefügt werden, sollten den Spalten jeder Datei Titel hinzugefügt werden.
Titelspalte 1: x-Dateiname
Titelspalte 2: y-Dateiname
Titelspalte 3: Dateiname-Wert
Mit „nomdufichier“, was dem Namen der geöffneten Datei entspricht.
Mit dem folgenden Code schaffe ich es, den Namen des Ordners und alle Namen der Textdateien abzurufen, die in diesem Ordner geöffnet werden sollen:
// Chemin du répertoire contenant les fichiers textes
chemin_du_repertoire = "chemin\du\dossier";
// Parcourir le répertoire et obtenir les noms des fichiers
noms_fichier = Files In Directory(chemin_du_repertoire, "\*.txt");
Aber für den Rest habe ich keinen Ansatzpunkt.
Vielen Dank für Ihre Hilfe und Antworten!
Automatisierung und SkripterstellungDatenzugriffBetreff: Joindre fichiers textesUm einen guten Ausgangspunkt zu erhalten: Führen Sie die Aktion für ein Dateipaar interaktiv mit JMP aus und kopieren Sie dann das Skript aus Enhanced Log. Anschließend können Sie damit beginnen, das von JMP erstellte Skript so zu ändern, dass es viel einfacher in Ihrem Skript funktioniert.
Betreff: Textdateien anhängenEs ist mir gelungen, ein Skript zu schreiben, das Textdateien in JMP-Dateien mit den richtigen Spaltentiteln umwandeln kann.
Allerdings ist es schwieriger, alle diese Dateien online zusammenzuführen.
Ich habe es mit folgendem Skript versucht:
// Chemin du dossier contenant les fichiers texte
dossier = "......";
// Obtenir la liste de tous les fichiers dans le dossier
listeFichiers = Files In Directory(dossier);
// Créer une nouvelle table pour stocker les données combinées
table = New Table("Data Table");
// Boucle pour charger et combiner les fichiers
for (i = 1, i <= N Items(listeFichiers), i++,
fichierCourant = dossier || listeFichiers[i];
dt = Open(fichierCourant);
// Ajouter les colonnes du fichier courant à la table combinée
table << Join(With(dt),By Row Number);
// Fermer le fichier courant
Close(dt, NoSave);
);Betreff: Joindre fichiers textesMit Join erstellen Sie höchstwahrscheinlich immer eine neue Tabelle, also müssten Sie sich auch darum kümmern. Eine andere Möglichkeit besteht darin, stattdessen Update zu verwenden
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("A1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3]))
);
dt1 = New Table("Untitled 2",
Add Rows(3),
Compress File When Saved(1),
New Column("B1", Numeric, "Continuous", Format("Best", 12), Set Values([4, 5, 6]))
);
wait(1);
dt << Update(
With(Data Table("Untitled 2")),
Replace Columns in Main Table(None)
);
Close(dt1, no save);
(Probieren Sie dies auch zuerst mit der interaktiven Option)
Betreff: Textdateien anhängenIch habe das folgende Skript geschrieben, das gut funktioniert, aber die Ausführung für 2800 Dateien dauert lange.
Names Default To Here( 1 );
// Début de la mesure du temps
start=tick seconds();
// Chemin du dossier contenant les fichiers texte
dossier = "...";
// Obtenir la liste de tous les fichiers dans le dossier
listeFichiers = Files In Directory(dossier);
For ( i = 1 , i <= 2862 , i++,
Names Default To Here( 1 );
if( i == 1,
fichierCourant = dossier || listeFichiers[1];
fichierCourant1 = dossier || listeFichiers[Num(i+1)];
dt = Open(fichierCourant);
dt1 = Open(fichierCourant1);
dt << Join(
With( dt1 ),
By Row Number,
Output Table( "Sans titre.jmp" )
);
Close(dt,NoSave);
Close(dt1,NoSave);
dt = current data table();
,
dt = current data table();
fichierCourant1 = dossier || listeFichiers[Num(i+1)];
dt1 = Open(fichierCourant1);
dt << Join(
With( dt1 ),
By Row Number,
Output Table( "Sans titre.jmp" )
);
Close(dt,NoSave);
Close(dt1,NoSave);
);
);
end=tick seconds();
runtime=end-start;
durée=runtime/60;
result=(Char("La durée est de ")||Char(durée,5) || " "||Char("minutes"));
show(result);Vielen Dank für Ihre Hilfe !