358 votes

Écriture d'une chaîne de caractères dans un fichier sur une nouvelle ligne à chaque fois

Je veux ajouter une nouvelle ligne à ma chaîne chaque fois que j'appelle file.write() . Quel est le moyen le plus simple de faire cela en Python ?

11voto

citynorman Points 1131

Une autre solution qui écrit depuis une liste en utilisant fstring

lines = ['hello','world']
with open('filename.txt', "w") as fhandle:
  for line in lines:
    fhandle.write(f'{line}\n')

Et en fonction

def write_list(fname, lines):
    with open(fname, "w") as fhandle:
      for line in lines:
        fhandle.write(f'{line}\n')

write_list('filename.txt', ['hello','world'])

9voto

Kabamaru Points 2563
file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
    file.write("This will be added to the next line\n")

o

log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")

7voto

Mesco Points 428

À moins d'écrire dans des fichiers binaires, utilisez print. L'exemple ci-dessous est bon pour le formatage des fichiers csv :

def write_row(file_, *columns):
    print(*columns, sep='\t', end='\n', file=file_)

Utilisation :

PHI = 45
with open('file.csv', 'a+') as f:
    write_row(f, 'header', 'phi:', PHI, 'serie no. 2')
    write_row(f)  # additional empty line
    write_row(f, data[0], data[1])

Notes :

5voto

user1767754 Points 460

Juste une note, file n'est pas supporté dans Python 3 et a été supprimé. Vous pouvez faire de même avec le open fonction intégrée.

f = open('test.txt', 'w')
f.write('test\n')

2voto

chough Points 66

Je n'avais vraiment pas envie de taper \n à chaque fois et La réponse de @matthause n'a pas semblé fonctionner pour moi, alors j'ai créé ma propre classe

class File():

    def __init__(self, name, mode='w'):
        self.f = open(name, mode, buffering=1)

    def write(self, string, newline=True):
        if newline:
            self.f.write(string + '\n')
        else:
            self.f.write(string)

Et le voici mis en œuvre

f = File('console.log')

f.write('This is on the first line')
f.write('This is on the second line', newline=False)
f.write('This is still on the second line')
f.write('This is on the third line')

Cela devrait apparaître dans le fichier journal comme

This is on the first line
This is on the second lineThis is still on the second line
This is on the third line

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X