Cet article s'adresse aux débutants en Python chez Django Girls Japan et elv, Ceci est un matériel pour les sessions d'étude. Puisque l'auteur est aussi un débutant, nous nous excusons pour tout inconvénient.
Environnement Namer: Windows 10 python3.5
Cette page contient les étapes de base pour lire le CSV et le cracher dans un autre format Cette page explique étape par étape. Tout d'abord, avant de créer une classe, écrivons le processus du début à la fin.
Cette fois, le CSV lu (addresslist.csv) est converti au format suivant. Exporter en tant que fichier CSV séparé (allcodelist.csv).
L'adresse et le numéro de téléphone sont des informations appropriées
addresslist.csv
allcodelist.csv
Tout d'abord, la préparation. Créez un nouveau dossier à n'importe quel emplacement. Sur la ligne de commande (Cliquez ici pour savoir comment ouvrir la ligne de commande [http://qiita.com/sandream/items/a0f69e69b561192517a2) Lorsque vous atteignez l'emplacement où vous souhaitez créer le dossier, entrez ** nom du dossier mkdir **. Cette fois, créez un dossier appelé adresse.
mkdir address
Écrivez ce qui suit dans l'éditeur de texte dans le dossier créé, Enregistrez le fichier python.
# -*- coding: utf-8 -*-
#!/usr/bin/env python
Veuillez inclure ce qui précède au début du fichier. (L'explication du contenu ci-dessus est omise ici.) Donnez un nom au fichier et enregistrez-le avec une extension .py. (Le code de caractère est utf-8.) Il existe différents éditeurs de texte, mais l'auteur utilise ATOM.
Maintenant que nous sommes prêts, chargeons csv. ** Variable = open (chemin du fichier que vous voulez lire, "r") ** Vous pouvez lire les données du fichier avec.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
f = open("addresslist.csv", "r")
print(f)
f.close()
Ouvrez le fichier avec ouvrir et fermer le dernier fichier ouvert. J'imprime les données que j'ai reçues avant de fermer. Cette fois, j'ai mis le fichier csv dans le même dossier, donc Il est possible de recevoir uniquement par nom de fichier. (Si vous souhaitez lire un fichier dans un autre dossier, entrez le chemin.)
Quand j'exécute le fichier
Vous pouvez voir que vous avez bien reçu addresslist.csv.
Bon, ça s'écarte un peu du flux d'origine, mais jusqu'ici dans le programme Le nom du fichier à lire a été fixé comme addresslist.csv. Cependant, dans certains cas, vous souhaiterez peut-être lire un fichier différent.
Nous allons vous montrer comment obtenir et utiliser le nom de fichier entré à l'invite de commande lors de l'exécution du fichier.
** module sys ** Import.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import sys
args = sys.argv
print(args)
** sys.argv ** est entré comme nom de fichier python lors de l'exécution du fichier à partir de l'invite de commande. Lorsque vous entrez, le contenu du texte entré après le nom de fichier python séparé par un espace demi-largeur sera reçu sous forme de liste.
Lorsque vous exécutez le fichier contenant le code ci-dessus, ce sera comme suit.
python allcode2.py "test" Si vous exécutez, vous pouvez voir que ** ['allcode2.py', 'test'] ** est renvoyé. python allcode2.py "test" "DjangoGirls" "elv" Si vous courez Vous pouvez voir que ** ['allcode2.py', 'test', 'DjangoGirls', 'elv'] ** est renvoyé. Commencez toujours la liste avec le nom du fichier Python que vous exécutez.
Utilisez cette fonction pour obtenir le nom du fichier et l'ouvrir.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import sys
import csv
args = sys.argv
filename = args[1]
f = open(filename, 'r')
for i in csv.DictReader(f):
print(i)
J'ai mis la liste dans sys.argv dans une variable appelée args. Comme expliqué ci-dessus, le premier élément de la liste sera le nom du fichier exécuté, alors récupérez le deuxième élément de la liste. (Pour la liste, cliquez ici](http://qiita.com/sandream/items/e7a215a27c080cf8ac03)) Obtenez le nom du fichier csv que vous voulez lire avec args [1] dans la variable ** filename **.
Désormais, lorsque l'utilisateur exécute le fichier, s'il oublie d'entrer le nom du fichier, le fichier ne peut pas être ouvert et le programme échouera. Par conséquent, si vous oubliez d'entrer le nom du fichier ou si vous spécifiez un nom de fichier qui n'existe pas, quittez le programme et configurez-le pour afficher une erreur facile à comprendre. try: ** Que veux-tu faire ** except: ** Le traitement lorsque le programme essayé en cours d'essai ne peut pas être exécuté comme souhaité **
Cette fois, je présenterai deux méthodes de gestion des erreurs. (Un jour ... j'aimerais écrire séparément divers articles sur la gestion des erreurs.)
Le premier est le traitement lorsque l'utilisateur oublie d'entrer le nom du fichier. Si vous spécifiez ** filename = args [1] ** et que l'utilisateur n'entre pas de nom de fichier, une erreur se produira car [1] dans la liste n'existe pas.
Par conséquent, si une erreur se produit, je souhaite mettre fin au programme et informer l'utilisateur que le nom de fichier n'est pas inclus, procédez comme suit.
try:
filename = args[1]
except:
sys.exit("No file Name!")
Si vous faites cela, si vous l'exécutez sans spécifier le nom du fichier CSV à lire De cette façon, les caractères spécifiés dans () de sys.exit () sont affichés.
La prochaine fois que l'utilisateur saisira un nom de fichier, si le fichier n'existe pas, la variable filename contiendra le nom du fichier, Lors de l'ouverture avec ** f = open (filename, 'r') **, une erreur se produira car il n'y a pas de fichier.
Par conséquent, il est décrit comme suit.
try:
filename = args[1]
f = open(filename, 'r')
except IOError as e:
sys.exit("Unable to open file: {}".format(e))
** Une erreur IOE ** se produit lorsque l'entrée ou la sortie échoue. Par exemple, une erreur qui se produit lorsque le disque est plein ou que le fichier d'entrée n'existe pas. ** IOError as e ** signifie que lorsqu'une exception se produit, l'objet contenant ces informations est défini comme "e" et le traitement qu'il contient (dans ce cas, seules les informations sont affichées) est exécuté. Cette fois, je voulais afficher un message d'erreur, alors je l'ai paramétré. Si vous ne souhaitez pas utiliser la valeur d'erreur, vous n'avez pas besoin de l'écrire.
Si vous spécifiez un nom de fichier approprié et que vous l'exécutez, Ce sera. Après Impossible d'ouvrir le fichier: est le message d'erreur IOError (la partie marquée e).
Dans ce programme, lorsque les deux erreurs ci-dessus se produisent, le programme sera arrêté même si le traitement des exceptions n'est pas effectué. Par exemple, en écrivant de nombreux programmes, je veux que vous puissiez exécuter ce processus, mais si vous ne pouvez pas, c'est très bien. A l'heure try: ** Que veux-tu faire ** except: pass Ce faisant, vous pouvez l'utiliser pour ne rien faire si une erreur se produit. Je pense qu'il est bon de se souvenir.
De plus, si vous recevez un message d'erreur, faites une liste et écrivez-la dans le texte à la fin, vous pouvez vérifier ce qui n'a pas fonctionné une fois le programme terminé et vous pouvez le récupérer, ce qui est pratique. ..
Cette fois, saisissez les données reçues sur la première ligne. La deuxième ligne et les suivantes créent un dictionnaire qui correspond à la valeur de chaque clé.
Par conséquent, utilisez le module csv. Tout d'abord, importez le module avec ** import csv **.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import csv
f = open("addresslist.csv", "r")
for i in csv.DictReader(f):
print(i)
f.close()
(Par souci d'explication, la gestion des exceptions introduite ci-dessus est omise une fois.)
csv.DictReader () utilise la première ligne des données csv reçues comme clé Les données de la ligne suivante généreront un objet qui sera la valeur de cette clé.
Je veux extraire les objets générés ligne par ligne, alors utilisez l'instruction for et J'imprime. Si vous exécutez ce qui précède, vous obtiendrez les résultats suivants.
Au fait, si vous voulez lister le CSV chargé Utilisez ** csv.reader () ** pour obtenir une liste.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import csv
f = open("addresslist.csv", "r")
for i in csv.reader(f):
print(i)
f.close()
Résultat d'exécution
Cette fois, le CSV lu (addresslist.csv) est converti au format suivant. Exporter en tant que fichier CSV séparé (allcodelist.csv).
L'adresse et le numéro de téléphone sont des informations appropriées
addresslist.csv
allcodelist.csv
Préparez une liste vide (newcsv) et ajoutez des informations à la liste vide (newcsv).
newcsv = []
top_list = [
'name',
'zip code',
'address',
'phone',
'mobile_pyone'
]
newcsv.append(top_list)
Tout d'abord, je mets la ligne d'article dans une variable appelée top_list et l'ajoute à la liste newcsv utilisée pour l'exportation. Pour ajouter une liste, écrivez ** le nom de la liste que vous souhaitez ajouter.append (objet à ajouter) **.
Maintenant que les éléments sont terminés, nous ajouterons plus d'informations. Générez les informations reçues par csv.DictReader () dans le format requis et ajoutez-les à la liste.
Il existe différentes manières de générer une chaîne de caractères, mais cette fois, nous allons introduire ** join **. ** Spécifiez le caractère à utiliser pour la connexion. Rejoindre (transmettre les informations que vous souhaitez connecter dans une liste) **
Qu'est-ce que ça veut dire ...
Vous pouvez voir que la chaîne de caractères de la liste spécifiée après la jointure est connectée avec-spécifié avant la jointure.
Il existe d'autres moyens de concaténer des chaînes de caractères, comme l'utilisation de format ou +, qui peuvent être plus courants, mais c'est [Janken Poi en Python pour les débutants (réponses et explications)](http: // qiita) Veuillez vous référer à la concaténation des chaînes de caractères de .com / sandream / items / 01374069f447b7748eba). Cette fois, je ne l'ai pas présenté sur la page ci-dessus, j'ai donc utilisé join.
Cette fois, nous allons connecter les informations de chaque élément, nous allons donc procéder comme suit.
for i in csv.DictReader(f):
line = []
line.append(" ".join((i['lastname'], i['firstname'])))
line.append(":".join(("Code postal", i['zip code'])))
line.append("".join((i['address1'], i['address2'], i['address3'])))
line.append(":".join(("numéro de téléphone", i['phone'])))
line.append(":".join(("Numéro de téléphone portable", i['mobilephone'])))
newcsv.append(line)
Puisque je veux créer une liste pour une ligne une fois par minute, je vais créer une liste vide dans une variable appelée ligne et y mettre les informations pour chaque cellule. Lorsque j'ai terminé, je l'ai ajouté à la liste d'exportation (newcsv).
Tout d'abord, définissez le format de l'expression. ** csv.writer (objet fichier, délimiteur = délimiteur, fin de ligne = code de saut de ligne) ** Est utilisé.
Pour l'objet fichier, spécifiez ** open (nom du fichier CSV à exporter, méthode d'exportation **). Comme pour la méthode d'exportation, ** w ** sera écrasé et ** a ** sera ajouté.
** delimiter ** est une spécification de ce qu'il faut diviser. La valeur par défaut est la virgule. CSV est séparé par des virgules, il n'est donc pas spécifié cette fois.
** terminateur de ligne = code de saut de ligne) ** est le code de saut de ligne. Cette fois, spécifiez ** / n **.
writer = csv.writer(open("allcodelist.csv", "w"), lineterminator='\n')
Après avoir défini le format de l'expression, exportez-le.
writer.writerows(newcsv)
** writerows (objet à écrire) ** Cette fois, je mets les données que je veux écrire dans une variable appelée newcsv, donc Spécifiez newcsv dans () de writerows ().
** writerows ** écrit tous les objets spécifiés entre () avec le nom de fichier spécifié dans ** open (nom de fichier à écrire, méthode d'exportation **).
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import sys
import csv
args = sys.argv
#Recevez le nom de fichier entré à l'invite de commande
try:
filename = args[1]
except:
sys.exit("No file Name!")
#Recevez le CSV correspondant en utilisant le nom de fichier reçu
try:
filename = args[1]
f = open(filename, 'r')
except IOError as e:
sys.exit("Unable to open file: {}".format(e))
#Générer une ligne d'article CSV à exporter
newcsv = []
top_list = [
'name',
'zip code',
'address',
'phone',
'mobile_pyone'
]
newcsv.append(top_list)
for i in csv.DictReader(f):
line = []
line.append(" ".join((i['lastname'], i['firstname'])))
line.append(":".join(("Code postal", i['zip code'])))
line.append("".join((i['address1'], i['address2'], i['address3'])))
line.append(":".join(("numéro de téléphone", i['phone'])))
line.append(":".join(("Numéro de téléphone portable", i['mobilephone'])))
newcsv.append(line)
#Exporter les données générées
writer = csv.writer(open("allcodelist.csv", "w"), lineterminator='\n')
writer.writerows(newcsv)
f.close()
Cela fait longtemps, mais j'espère que vous le trouverez utile. La prochaine fois, sur la base de ce contenu, créez une classe, puis créez une classe qui hérite de la classe créée! Je voudrais passer à. (L'article est en cours de création. Il sera lié une fois terminé.)
Recommended Posts