附加文本文件大家好,
我有一个包含 2800 个文本文件的文件夹。 每个文本文件有 3 列。 我希望能够将所有这些文本文件连接到一个 JMP 文件中(通过按行号执行连接),因此该 JMP 文件将具有 2800*3 列。
评论:
在加入所有文件之前,有必要向每个文件的列添加标题。
标题栏 1:x-文件名
标题列 2:y-文件名
标题栏 3:文件名-值
“nomdufichier”对应于正在打开的文件的名称。
我设法使用以下代码检索文件夹的名称以及要在此文件夹中打开的所有文本文件的名称:
// 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");
但接下来我就没有起点了。
感谢您的帮助和解答!
自动化和脚本编写数据存取回复:Joindre fichiers 文本要获得良好的起点:使用 JMP 以交互方式对一对文件执行操作,然后从增强日志复制脚本。 然后,您可以开始修改 JMP 创建的脚本,以便更轻松地在您的脚本中工作。
回复:附加文本文件我设法编写了一个脚本,可以将文本文件转换为具有正确列标题的 JMP 文件。
然而,要在线连接所有这些文件,则比较困难。
我尝试使用以下脚本:
// 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);
);回复:Joindre fichiers 文本通过连接,您很可能总是创建一个新表,因此您还必须处理它。 其他选项是使用更新代替
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);
(也可以先使用交互式选项尝试一下)
回复:附加文本文件我编写了下面的脚本,效果很好,但运行 2800 个文件需要很长时间。
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);感谢您的帮助 !