fichier = open('fichier.txt','w') # on ouvre le fichier en écriture
liste = [('Aster-03546', 'C169v2-00005'), ('Aster-02416', 'C169v2-00007'), ('Aster-05984', 'C169v2-00004')]
for item in liste: # pour chaque tuple de la liste
fichier.write("%s \t %s\n" % item) # on formate une chaine avec le contenu du tuple, et on écrit la chaîne dans un le
fichier.close() # toujours bien fermer les fichiers
Explications:
À la ligne 1, on ouvre un fichier. Si le fichier n'existe pas, il sera crée...
À la ligne 2, on fait notre liste.
À la ligne 4, on crée une boucle «for». Cette boucle va exécuter les instructions du bloc qui la suit (ici, ce bloc est la ligne 5) pour chaque item de la liste (pour chaque tuple, donc). La variable «item» contiendra donc le toujours le tuple courant ( d'abord «('Aster-03546','C169v2-00005')», puis «('Aster-02416','C169v2-00007')», etc...).
La ligne 5 constitue le bloc de la boucle «for», elle sera donc répétée pour chaque tuple.
L'instruction «fichier.write("machintruc")» écrit «machintruc» dans le fichier, mais dans ce bout de code, nous lui passons le paramètre suivant:
"%s \t %s\n" % item
Cela s'appelle du formatage:
En gros, on écrit d'abord la chaîne que l'on veut formater, puis on ajoute le signe «%s», et enfin un tuple, et python vas remplacer le premier «%s» par le premier objet de la tuple, le second «%s» par le second objet de la tuple, etc...
Enfin, on ferme le fichier quand on à terminé...
Pour finir, voilà d'autres exemples de formatage:
print("Hello, %s !" % ("World")) # affichera «Hello, World !»
fichier = "/tmp/acpidump.out"
print("Erreur fatale: le fichier %s est introuvable !" % fichier) # affichera «Erreur fatale: le fichier /tmp/acpidump.out est introuvable !»
ascii_art = """
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."%s"...
"""
print(ascii_art % 'Have you mooed today?')
# affichera:
# (__)
# (oo)
# /------\/
# / | ||
# * /\---/\
# ~~ ~~
# ...."Have you mooed today?"...
prenom = 'Robert'
heures = 17
minutes = 30
message = 'Salut %s, il est %d:%d !' % (prenom, heures, minutes) # la variable «message» contiendra «Salut Robert, il est 17:30 !» ...
N'hésite pas à demander des précisions si tu n'as pas compris:
Le formatage n'est pas totalement indispensable en Python, mais il est quand même extrêmement utile !
Le problème de la solution de Skami 18 c'est qu'il utilise l'ancien système de formattage de chaines de caractères, (qui est déprécié).
En bref, tu peux aussi le faire comme ça (avec la nouvelle méthode standard):
liste = [('Aster-03546', 'C169v2-00005'), ('Aster-02416', 'C169v2-00007'),
('Aster-05984', 'C169v2-00004')]
with open('monfichier.txt', 'w') as fichier:
fichier.write('\n'.join('{0}\t{1}'.format(a, b) for a, b in liste))
En gros : pour chaque élément (a,b) de la liste on crée une chaine '{a}\t{b}'.
C'est ce à quoi correspond l'expression : ('{0}\t{1}'.format(a,b)fora,binliste)
Cette expression retourne un générateur, c'est une séquence qui "décrit" une liste, sans la créer en mémoire, et qui est comprise par la méthode '\n'.join(...). Cette méthode sert à mettre bout à bout toutes les chaines de caractères contenues dans une séquence, en les séparant par un '\n' (un passage à la ligne).
Et tout ça, c'est passé en argument de la méthode fichier.write(...) qui écrit la chaîne obtenue dans le fichier.
Mission accomplie.
PS: ce code est très condensé. Si tu as du mal à comprendre le principe, essaye de le décortiquer et d'expérimenter avec les différentes expressions dans ta console.
Notamment, essaye :
>>> generateur = ('{0}\t{1}'.format(a, b) for a, b in liste)
>>> generateur
# constate que c'est un objet de type "generator"
>>> chaine = '\n'.join(generateur)
>>> print(chaine)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.