Ouvrir plusieurs fichiers de données de manière récursive<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'aimerais trouver du code qui ouvrira récursivement les fichiers d'un répertoire Windows.
Disons que mon chemin est : c:\charlie\data
Je veux que JMP trouve tous les fichiers *.txt dans ce répertoire et dans les répertoires inférieurs et les ouvre tous.
En fin de compte, je vais les fusionner mais pour l'instant je veux juste tous les ouvrir.
J'ai essayé (sans succès) :
chemin = "C:\charlie\data\data1";
file_list = Fichiers dans le répertoire("C:\charlie\data\data1");
pour (i=1, i<=NItems(file_list), i++,
dt =
Ouvrir(
chemin || liste_fichiers ,
Importer les configurations(
Fin de ligne (CRLF, CR, LF),
Fin de champ (virgule, autre ( "0x7c" ) ),
Citations de bande( 1 ),
Utilisez l'apostrophe comme guillemet ( 0 ),
Numériser le fichier entier (1),
Traitez les colonnes vides comme numériques ( 0 ),
Etiquettes( 1 ),
Noms de colonnes Début( 1 ),
Début des données( 2 ),
Lignes à lire (toutes),
Règle de l'année( "20xx" )
)
);
);
Re : Ouvrir plusieurs fichiers de données de manière récursiveCe script fonctionne très bien pour ouvrir tous les fichiers d'un répertoire, les filtrer en fonction de certains critères, puis concaténer tous les fichiers.
=================================================== =================================================== =
chemin = "C:\temp\data\" ;
liste_fichier = {} ;
file_list = Fichiers dans le répertoire (chemin, récursif) ;
mesFichiers = liste_fichiers ;
Pour( i = 1, i <= N Items( file_list ), i++,
Si( Contient( liste_fichier , ".somme" ),
mes dossiers = ""
)
);
final_files = mes fichiers ;
///////////////////Ouvrir le premier fichier de la liste/////////////////////
///////des fichiers supplémentaires seront ajoutés à celui-ci///////////
je = 1 ;
dtjoin = Ouvrir(
chemin || fichiers_finals ,
Colonnes(
Pass_Fail = Caractère,
Paramètre = Caractère,
Data_Value = Numérique,
Unités = Caractère,
LSL = Numérique,
USL = Numérique,
Remarque = Caractère,
Test_Cond = Caractère
),
Importer les configurations(
Fin de ligne (CRLF, CR, LF),
Fin de champ (virgule, autre ( "0x7c" ) ),
Citations de bande( 1 ),
Utilisez l'apostrophe comme guillemet ( 0 ),
Numériser le fichier entier (1),
Traitez les colonnes vides comme numériques ( 0 ),
Etiquettes( 1 ),
Noms de colonnes Début( 1 ),
Début des données( 2 ),
Lignes à lire (toutes),
Règle de l'année( "20xx" )
),
)
<< définir le nom( "Joined1" );
/////////////////////////////////////////////// //////////////////////////
//////////Ouvrez maintenant les fichiers restants dans la liste//////////////
/////////////////////////////////////////////// //////////////////////////
je = 2 ;
Pour( i = 2, i <= N Items( final_files ), i++,
dt =
Ouvrir(
chemin || fichiers_finals ,
Colonnes(
Pass_Fail = Caractère,
Paramètre = Caractère,
Data_Value = Numérique,
Unités = Caractère,
LSL = Numérique,
USL = Numérique,
Remarque = Caractère,
Test_Cond = Caractère
),
Importer les configurations(
Fin de ligne (CRLF, CR, LF),
Fin de champ (virgule, autre ( "0x7c" ) ),
Citations de bande( 1 ),
Utilisez l'apostrophe comme guillemet ( 0 ),
Numériser le fichier entier (1),
Traitez les colonnes vides comme numériques ( 0 ),
Etiquettes( 1 ),
Noms de colonnes Début( 1 ),
Début des données( 2 ),
Lignes à lire (toutes),
Règle de l'année( "20xx" )
)
);
dtjoin = dtjoin << Concaténer(
dt,
nom de la table de sortie ( "Joined" || Char( i ) ),
);
Fermer (dt, nosave);
Close( "Rejoint" || Char( i - 1 ), nosave );
Attendez( 0.1 );
); //Fin de Pour
dtjoin << set name( "Tous les joints" );
Re : Ouvrir plusieurs fichiers de données de manière récursiveChamps CHF,
Je faisais quelque chose de similaire, où je voulais ouvrir un seul fichier à la fois, puis le concaténer au bas du fichier précédent.
La méthode simple consistant à ouvrir tous les fichiers, puis à les concaténer tous en même temps était trop compliquée en raison du nombre de fichiers avec lesquels je travaillais.
Le script ci-joint vous permet de choisir un répertoire contenant des fichiers txt ou csv, puis de les concatèner tous ensemble, un à la fois.
Cela aide si tous les fichiers ne rentrent pas dans la mémoire en même temps.
-B
Re : Ouvrir plusieurs fichiers de données de manière récursiveJe devrais dire "de MPB".Merci MPB.J'ai une autre question à vous poser dans ce sens si vous avez le temps.
Re : Ouvrir plusieurs fichiers de données de manière récursiveJ'ai ajouté le "\"
Merci!
Maintenant, j'essaie de tous les concaténer.
J'ai trouvé un message de MJB qui a été très utile.
Il a publié un moyen de le faire, mais avec JOIN et uniquement avec des fichiers JMP.
J'ai ajouté ma routine d'importation et les options "ouvrir avec aperçu".
Je devais ouvrir le premier fichier, puis définir la boucle pour ouvrir les autres fichiers
et concaténez-les avec le premier.
Cela ne fonctionne toujours pas vraiment mais j'en suis proche.
Re : Ouvrir plusieurs fichiers de données de manière récursiveVotre variable de chemin ne se termine pas par une barre oblique, donc le nom de fichier résultant échouera.
Pour le rendre récursif et avoir des noms de fichiers corrects :
path = "C:\charlie\data\data1\";
file_list = Files In Directory(path, recursive);
for(i = 1, i <= N Items(file_list), i++,
print(path || file_list);
);
Vous pouvez modifier la déclaration d'impression selon vos besoins.