Adjuntar archivos de textoBuenos días a todos,
Tengo una carpeta que contiene 2800 archivos de texto. Cada archivo de texto tiene 3 columnas. Me gustaría poder unir todos estos archivos de texto en un solo archivo JMP (realizando una unión por número de línea); por lo tanto, este archivo JMP tendría 2800*3 columnas.
Observaciones :
Antes de unir todos los archivos, se deben agregar títulos a las columnas de cada archivo.
Columna de título 1: nombre de archivo x
Columna de título 2: nombre de archivo y
Columna de título 3: nombre de archivo-valor
Con “nomdufichier” que corresponde al nombre del archivo que se está abriendo.
Logro recuperar el nombre de la carpeta y todos los nombres de los archivos de texto para abrir en esta carpeta con el siguiente código:
// 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");
Pero entonces no tengo punto de partida para el resto.
Gracias por su ayuda y respuestas!
Automatización y secuencias de comandosAcceso a los datosRe: Joindre fichiers textesPara obtener un buen punto de partida: realice la acción para un par de archivos de forma interactiva con JMP y luego copie el script desde Registro mejorado. Luego, puede comenzar a modificar ese script creado por JMP para que funcione en su script mucho más fácilmente.
Re: Adjuntar archivos de textoLogré escribir un script que puede transformar archivos de texto en archivos JMP con los títulos de columna correctos.
Sin embargo, realizar la unión en línea de todos estos archivos es más difícil.
Probé con el siguiente script:
// 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);
);Re: Joindre fichiers textesCon join, lo más probable es que siempre esté creando una nueva tabla, por lo que también tendría que manejar eso. Otra opción es usar Actualizar en su lugar
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);
(pruebe esto también primero con la opción interactiva)
Re: Adjuntar archivos de textoEscribí el siguiente script que funciona bien, pero lleva mucho tiempo ejecutarlo para 2800 archivos.
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);Gracias por su ayuda !