Comment enregistrer le paramètre d'ouverture de fichier texte dans un scriptBonjour,
Problème:
J'ai de nombreux fichiers .txt. Je ne me soucie que des données de la colonne 4, en commençant par la ligne 7 jusqu'à l'infini. Je voudrais extraire toutes les données de la colonne 4 des nombreux fichiers .txt et les concaténer dans une seule table. Quelle est la meilleure façon de procéder? Idéalement, je voudrais créer un script pour exécuter cela.
Dans le même ordre d'idées, lorsque j'utilise la méthode File - open pour ouvrir les fichiers .txt avec Data (en utilisant l'aperçu), je peux formater correctement mes données de colonne 4, MAIS je ne peux pas comprendre comment trouver ou enregistrer ces 'open ' réglage. Je voudrais enregistrer dans le script afin que je puisse ouvrir les autres fichiers .txt avec les mêmes paramètres.
Comment puis-je faire cela?
J'ai joint l'un de mes exemples de fichiers .txt pour référence.
Merci pour l'aide!
Tableau de donnéesScriptingRe: Comment enregistrer le paramètre d'ouverture de fichier texte dans un scriptJe pense que la voie à suivre est d'utiliser Importer plusieurs fichiers
Fichier => Importer plusieurs fichiers
Vous lirez tous les fichiers d'un dossier et les concaténerez (si vous le souhaitez).Ensuite, il ne vous restera plus qu'à supprimer les colonnes dont vous ne voulez pas.
De plus, après avoir exécuté tout le dossier, ou peut-être juste quelques fichiers pour un cas de test, vous pouvez accéder à l'entrée Source dans le panneau supérieur gauche de la table de données et faire un clic droit dessus et sélectionner Modifier, et vous obtiendrez tout le JSL. requis pour exécuter à partir d'un script.
Re: Comment enregistrer le paramètre d'ouverture de fichier texte dans un scriptDésolé, je n'ai pas décrit mon objectif assez clairement. La suggestion ne me donne pas ce dont j'ai besoin. J'ai également réalisé que je devrais utiliser la commande join et non la commande concatenate.
J'ai 39 fichiers .txt. Je veux seulement les données de la 4ème colonne de chaque fichier .txt. Je veux extraire ces données et les ajouter à une nouvelle table de sorte que j'aie 39 colonnes séparées (une pour chaque 4ème colonne dans les 39 fichiers .txt).
Re: Comment enregistrer le paramètre d'ouverture du fichier texte dans le scriptÀ des fins d'exemple, j'ai fait 4 copies de votre exemple de fichier et je les ai toutes placées dans un dossier sous mon dossier Groupe de discussion
Documents\Discussion Group\textfile
Je suis ensuite allé à
Fichier=>Importer plusieurs fichiers

J'ai coché la case "Ajouter une colonne de nom de fichier"
J'ai ensuite cliqué sur "Paramètres"

J'ai décoché "A des en-têtes"
J'ai changé la "Première ligne de données" en 7
J'ai décoché dans la case Fin de champ, "Virgule" et coché "Espaces"
cliqué sur OK
J'ai cliqué sur Importer
La table de données ouverte avec les colonnes Col1-Col6 plus les colonnes FileName

Les seules colonnes recherchées sont les colonnes Col5 et File Name donc supprimez toutes les autres

Il ne reste plus qu'à séparer les données des 4 fichiers d'entrée en colonnes
Aller à
Tableaux => Diviser

Sélectionnez le nom du fichier dans la colonne "Split By"
Sélectionnez la colonne 5 comme colonne "Split Columns"
Cliquez sur OK
La nouvelle table aura une colonne pour chacun des fichiers d'entrée

Cela devrait être la forme finale de la table dont vous avez besoin.Vous pouvez renommer les colonnes comme vous le souhaitez.
Re : Comment enregistrer le paramètre d'ouverture du fichier texte dans le scriptMerci Jim d'avoir montré Ouvrir plusieurs fichiers. Il semble être très puissant. Étrangement, je ne l'ai jamais utilisé - probablement à cause d'une vieille habitude de scripter des tâches comme celle-ci.
Si tous les fichiers ont exactement le même nombre de lignes, le script ci-dessous devrait donner la même table finale.
Names Default To Here( 1 );
path = "path to directory of text files";
files = Files In Directory( path );
open_expr = Expr(
dt = Open(
path || Expr( files[i] ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, CSV( 0 ) ),
Data Starts( 7 ),
Lines To Read( "All" )
),
private
)
);
M = []; //Matrix to hold data from multiple files
L = {}; // List of imported file names
For( i = 1, i <= N Items( files ), i++,
If( Ends With( files[i], ".txt" ),
Eval( Eval Expr( open_expr ) );
Insert Into( L, files[i] );
M ||= dt[0, 5]; // Add column 4 (5 becaue of fronting spaces in files)
Close( dt, no save );
)
);
// Make into table
dt = As Table( M, <<COLUMN names=""></COLUMN>