Géstion des fichiers CSV

Ed Wilson, Microsoft Scripting Guy, a annoncé le 2eme problème dans la série des Mini Scripting Games.

Ce coup-ci il s’agit d’aller lire le contenu d’un fichier CSV, qui contient 5 colonnes de données. En choisir 3 et créer un objet custom qui ne contient que des colonnes. Il faut ensuite créer un nouveau fichier CSV avec nos 3 colonnes.

Ed ne mentionne pas si on peut utiliser des cmdlets qui faciliteraient beaucoup la tâche. Du coup ma solution est en deux partie, la première n’utilise pas de cmdlets, et la deuxième les utilise.

Voici le fichier CSV de input :

Un peu de préparation pour déclarer des variables pointant vers les fichiers d’entrée et sortie :

Première solution (version longue, director uncut), pas forcément la meilleure.

Lisons le contenu du fichier CSV :

Nous avons maintenant un array $a qui contient un élément par ligne.

Nous devons maintenant créer un custom object. L’objet ne doit contenir que des colonnes d’après l’énoncé. Du coup je choisis de créer un objet qui contient des arrays que j’appelle c1, c2 et c3. Un par colonne :

J’ajoute un petit compteur qui m’aidera à savoir combien d’éléments sont dans les arrays. Je pourrais évidemment demander à une de ces arrays, mais par simplicité de lecture je préfère placer ce compteur au même niveau que les arrays.

Je vais choisir les colonnes a, c et e et créer une boucle pour stocker les données dans les arrays de notre objet. Lors de la boucle je vais également extraire les données sans les virgules.

Maintenant que nous avons les données dans le format voulu, nous allons les sauvegarder dans un autre fichier CSV comme demandé dans l’énoncé.

Création d’un fichier vide :

Sauvegarde des données en ajoutant les virgules comme délimiteur :

Voici mon fichier output :

Ca c’était la version loooongue, on peut faire beaucoup plus rapide, surtout avec les cmdlets et le ‘piping’ qui vont bien:

Et voilà

Partager ce contenu

  • Thomas

    Excellent blog, merci pour toutes ses informations !!