Comment lire et créer des fichiers CSV à l'aide de Python

Comment lire et créer des fichiers CSV à l'aide de Python

CSV est l'acronyme de «valeurs séparées par des virgules». Un fichier CSV est un document texte tout simplement utilisé pour représenter et échanger des données tabulaires. Chaque ligne d'un fichier CSV représente une «entité», et chaque colonne en représente un attribut. Les colonnes sont généralement séparées par une virgule mais d'autres caractères peuvent être utilisés comme séparateur de champ au lieu de cela. Dans ce tutoriel, nous verrons comment lire et créer des fichiers CSV à l'aide de Python et spécifiquement le CSV module, qui fait partie du
bibliothèque standard linguistique.

Dans ce tutoriel, vous apprendrez:

  • Comment lire les lignes CSV comme une liste de chaînes
  • Comment lire un CSV comme une liste de dictionnaires
  • Comment créer un CSV à l'aide de Python
  • Comment créer un CSV à partir d'une liste de dictionnaires
Comment lire et créer des fichiers CSV à l'aide de Python

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel Python3
Autre Connaissance de base du Python et de la programmation orientée objet
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

CSV - Valeur séparée de la virgule

Comme nous l'avons déjà mentionné dans l'introduction de ce tutoriel, un CSV est juste un simple fichier texte brut, formaté d'une manière qui nous permettons de représenter et d'échanger des données tabulaires. Chaque ligne d'un fichier CSV représente une entité quelconque, sauf le
Première ligne qui contient généralement les titres de terrain. Voyons un exemple. Supposons que nous voulons représenter les personnages du livre du Seigneur des Anneaux au format CSV:

Nom, Race Frodo, Hobbit Aragorn, Man Legolas, Elf Gimli, Dwarf 

Celui ci-dessus est un exemple trivial du contenu d'un fichier CSV. Comme vous pouvez le voir, nous avons utilisé le , (virgule) comme séparateur de champ. Nous enregistrons ces données dans un fichier appelé lotr.CSV. Voyons comment nous pouvons le lire en utilisant la programmation Python
langue, et le CSV module.

Lire un fichier CSV

Pour interagir avec un fichier CSV avec Python, la première chose que nous devons faire est d'importer le CSV module. Écrivons un script simple, juste quelques lignes de code:

#!/ usr / bin / env python3 Importer csv si __name__ == '__main__': avec open ('lotr.csv ', newline = ") comme csvfile: lecteur = csv.lecteur (CSVFile) pour la ligne dans le lecteur: imprimer (ligne) 


Dans cet exemple, nous supposons que le script que nous avons créé ci-dessus (appelons-le scénario.py) est dans le même répertoire du fichier CSV, et ledit répertoire est notre fonctionnement actuel.

La première chose que nous avons faite a été d'importer le CSV module; Ensuite, nous avons ouvert le fichier en mode lecture (la valeur par défaut) avec un gestionnaire de contexte, afin que nous soyons sûrs que l'objet de fichier soit toujours fermé chaque fois que les interprètes existent avec bloc, même si une sorte d'erreur se produit. Vous pouvez également remarquer que nous avons utilisé le nouvelle ligne argument du ouvrir Fonction pour spécifier une chaîne vide comme caractère Newline. Il s'agit d'une mesure de sécurité, puisque, comme indiqué dans le CSV module
Documentation:

Si newline = "n'est pas spécifié, Newlines intégrée à l'intérieur des champs citées ne sera pas interprétée correctement, et sur les plates-formes qui utilisent des terminaisons de ligne \ r \ n sur l'écriture, un extra \ r sera ajouté. Il devrait toujours être sûr de spécifier newline = ", car le module CSV fait sa propre manipulation (universelle) Newline.

Le csvfile L'objet représente notre fichier ouvert: nous le transmettons comme argument au CSV.lecteur fonction qui renvoie un objet de lecteur que nous faisons référence via le csv_reader variable. Nous utilisons cet objet pour itérer sur chaque ligne du fichier, qui est renvoyé comme une liste de chaînes. Dans ce cas, nous les imprimons. Si nous exécutons le script, nous obtenons le résultat suivant:

$ ./scénario.py ['name', 'race'] ['frodo', 'hobbit'] ['aragorn', 'man'] ['Legolas', 'elf'] ['gimli', 'nain'] 

C'était assez facile, n'était-ce pas? Et si un personnage autre que la virgule est utilisé comme séparateur de champ? Dans ce cas, nous pourrions utiliser délimiteur paramètre de la fonction et spécifiez le caractère qui doit être utilisé. Disons que ledit personnage est |. Nous écrivions:

csv_reader = csv.lecteur (CSVFile, Delimiter = "|") 
Copie

Lisez les champs CSV dans un dictionnaire

Celui que nous avons utilisé ci-dessus est probablement le moyen le plus simple que nous puissions utiliser pour lire un fichier CSV avec Python. Le CSV Les modules définissent également le Dicton classe, qui nous a permis de cartographier chaque ligne dans un fichier CSV dans un dictionnaire, où les clés sont les noms de champ et les valeurs sont le contenu réel dans la ligne. Voyons un exemple. Voici comment nous modifions notre script:

#!/ usr / bin / env python3 Importer csv si __name__ == '__main__': avec open ('lotr.csv ', newline = ") comme csvfile: lecteur = csv.DiCtreader (CSVFile) pour la ligne dans le lecteur: Imprimer (ligne) 
Copie

Le Dicton Constructeur de classe Le premier argument obligatoire est l'objet de fichier créé lorsque nous avons ouvert le fichier. Si nous lançons le script, cette fois, nous obtenons le résultat suivant:

'Name': 'frodo', 'race': 'hobbit' 'name': 'aragorn', 'race': 'man' 'name': 'legolas', 'race': 'elfe'  'Name': 'gimli', 'race': 'dwarf' 

Comme déjà dit, les champs contenus dans la première rangée sont utilisés comme clés du dictionnaire; Mais que se passe-t-il si la première ligne du fichier ne contient pas les noms de champ? Dans ce cas, nous pouvons les spécifier en utilisant le noms de terrain paramètre du Dicton Constructeur de classe:

lecteur = CSV.Dictreader (csvfile, fieldNames = ['name', 'race]) 
Copie

Créer un fichier CSV

Jusqu'à présent, nous venons de voir comment lire les données d'un fichier CSV, à la fois comme une liste de chaînes représentant chacune une ligne, et comme un dictionnaire. Voyons maintenant comment créer un fichier CSV. Comme toujours, nous commençons avec un exemple, et que nous l'expliquons. Imaginez que nous voulons créer programmatiquement créer le fichier CSV que nous avons créé manuellement avant. Voici le code que nous écrivions:

#!/ usr / bin / env python3 Importer csv si __name__ == '__main__': avec open ('lotr.csv ',' w ', newline = ") comme csvfile: écrivain = csv.Écrivain (csvfile) pour Row in (('name', 'race'), ('frodo', 'hobbit'), ('aragorn', 'man'), ('legoals', 'elfe'), (' Gimli ',' nain ')): écrivain.Writerow (Row) 


La première chose que vous devriez remarquer, c'est que cette fois nous avons ouvert le lotr.CSV Fichier en mode écriture (w). Dans ce mode, un fichier est créé s'il n'existe pas et est tronqué Sinon (consultez notre article sur la réalisation des opérations d'entrée / sortie sur des fichiers avec Python si vous voulez en savoir plus sur ce sujet).

Au lieu d'un lecteur objet, cette fois nous avons créé un écrivain un, en utilisant le écrivain fonction fournie dans le CSV module. Les paramètres que cette fonction accepte sont très similaires à ceux acceptés par le lecteur un. Nous pourrions, par exemple, spécifier un délimiteur alternatif en utilisant le paramètre avec le même nom.

Étant donné que dans ce cas, nous connaissons déjà toutes les lignes de CSV à l'avance, nous pouvons éviter d'utiliser une boucle et les écrire toutes à la fois en utilisant le écrivain Méthode de l'objet écrivain:

#!/ usr / bin / env python3 Importer csv si __name__ == '__main__': avec open ('lotr.csv ',' w ', newline = ") comme csvfile: écrivain = csv.écrivain (csvfile) écrivain.Writerrows ((('name', 'race'), ('frodo', 'hobbit'), ('aragorn', 'man'), ('Legolas', 'elf'), ('gimli', 'nain '))) 

Créez un fichier CSV avec l'objet DictWriter

Le CSV Le module fournit un Dictor classe, qui nous a permis de cartographier un dictionnaire à une ligne CSV. Cela peut être très utile lorsque les données sur lesquelles nous travaillons viennent ainsi et que vous souhaitez les représenter sous forme tabulaire. Voyons un exemple.
Supposons que les données de nos caractères LOTR sont représentées comme une liste de dictionnaires (peut-être qu'il serait retourné d'un appel API fait avec le demandes module). Voici ce que nous pourrions écrire pour créer un CSV basé sur lui:

#!/ usr / bin / env python3 Importer csv caractères_data = ['name': 'frodo', 'race': 'hobbit', 'name': 'aragorn', 'race': 'man', ' Nom ':' Legolas ',' race ':' elf ', ' name ':' gimli ',' race ':' nwarf '] if __name__ ==' __main__ ': avec open (' lotr.csv ',' w ') comme csvfile: écrivain = csv.Dictwriter (csvfile, fieldNames = ('name', 'race')) écrivain.écrivain writeHeader ().writerrows (personnages_data) 
Copie

Voyons ce que nous avons fait. Nous avons d'abord créé une instance du Dictor classe, passer comme arguments l'objet de fichier (csvfile) et que noms de terrain, qui doit être une séquence de valeurs à utiliser comme noms de champ CSV, et détermine dans quel ordre les valeurs contenues dans chaque dictionnaire doivent être écrites dans le fichier. Tandis que dans le cas du Dicton Constructeur de classe Ce paramètre est facultatif, ici il est obligatoire, et il est facile de comprendre pourquoi.

Après avoir créé le écrivain objet, nous avons appelé son WriteHeader Méthode: Cette méthode est utilisée pour créer la ligne CSV initiale, contenant les noms de champ que nous avons passés dans le constructeur.

Enfin, nous avons appelé le écrivain Méthode pour écrire toutes les lignes de CSV à la fois, en passant la liste des dictionnaires comme argument (ici nous les avons référencés par le Personnages_data variable). Terminé!

Conclusions

Dans cet article, nous avons appris les bases de la lecture et de la création de fichiers CSV à l'aide du langage de programmation Python. Nous avons vu comment lire les lignes d'un fichier CSV à la fois comme une liste de chaînes et dans un dictionnaire en utilisant un Dicton objet, et comment créer un nouveau fichier CSV écrivant une ligne à l'époque, ou toutes les lignes à la fois. Enfin, nous avons vu comment créer un fichier CSV à partir d'une liste de dictionnaires qui pouvaient être retournés d'un appel API. Si vous voulez en savoir plus sur le CSV module Python Veuillez consulter la documentation officielle.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Masterring Bash Script Loops
  • Boucles imbriquées dans les scripts bash
  • Choses à installer sur Ubuntu 20.04
  • Comment manipuler des feuilles de calcul Excel avec Python et…
  • Comment formater les données avec la colonne en Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Manipulation de Big Data pour le plaisir et le profit Partie 1
  • Manipulation de Big Data pour le plaisir et le profit Partie 2
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux