附加文本文件大家好,
我有一個包含 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);感謝您的幫助 !