2017-10-21 111 views
1

J'essaie d'ajouter une liste à un fichier .txt existant en Python trois. À l'heure actuelle, j'ai le code suivant:Ajouter une nouvelle liste dans une nouvelle ligne sur un fichier .txt en python

def function(list, new_add): 
    with open("file.txt", new_add) as file: 
     for item in list: 
      file.write("{}\t".format(item)) 


add_grade(list, "w") 

J'ai créé une liste:

list = [string1, integer1a, integer1b] 

Il fonctionne très bien créer un nouveau fichier txt. Mais si je remplace "w" par "a", je n'ai pas la sortie voulue. Ma question est maintenant, comment puis-je ajouter de nouveaux composants d'une liste au fichier dans une nouvelle ligne? Ma sortie actuelle ressemble à ceci si je tente d'ajouter de nouvelles variables:

chaine1 integer1a integer1b chaine2 integer2a integer2a

Je voudrais plutôt suivantes affichées:

chaine1 integer1a integer1b

chaine2 nombre entier2a nombre entier2a

...

Comment ajouter une nouvelle ligne après l'insertion de chaque liste?

Répondre

1

Vous pouvez le faire assez facilement avec la fonction Python 3 print(), il suffit de spécifier le séparateur et déposer auprès du sep et file paramètres et print() prendront soin des détails pour vous:

def function(iterable, filename, new_add): 
    with open(filename, new_add) as file: 
     print(*iterable, sep='\t', file=file) 

Notez que je renomme le paramètre list-iterable parce que nous list ombrage la classe list intégrée, et la fonction devrait fonctionner avec n'importe quel itérable.

Ce code sera également en Python 2 si vous ajoutez ce qui suit au début du fichier:

from __future__ import print_function 
+0

Bon point sur la surcharge 'list'. Juste suggéré une modification similaire dans l'autre réponse :) – FabienP

1

cela devrait fonctionner, vous devez appeler saut de ligne après avoir écrit votre liste dans le fichier

def add_grade(list, new_add): 
    with open("file.txt", new_add) as file: 
     for item in list: 
      file.write("{}\t".format(item)) 
     file.write("\n") 


add_grade(list, "w") 
+0

Je l'ai essayé et ça a marché comme voulu. Je vous remercie! –