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 ?

2voto

Nwoye CID Points 46

Utilisation de append (a) avec open() sur un print() La déclaration semble plus facile pour moi :

save_url  = ".\test.txt"

your_text = "This will be on line 1"
print(your_text, file=open(save_url, "a+"))

another_text = "This will be on line 2"
print(another_text, file=open(save_url, "a+"))

another_text = "This will be on line 3"
print(another_text, file=open(save_url, "a+"))

1voto

democidist Points 36

Voici la solution que j'ai trouvée en essayant de résoudre ce problème pour moi-même afin de produire de manière systématique \n comme séparateurs. Il écrit en utilisant une liste de chaînes où chaque chaîne est une ligne du fichier, cependant il semble que cela puisse fonctionner pour vous aussi. (Python 3.+)

#Takes a list of strings and prints it to a file.
def writeFile(file, strList):
    line = 0
    lines = []
    while line < len(strList):
        lines.append(cheekyNew(line) + strList[line])
        line += 1
    file = open(file, "w")
    file.writelines(lines)
    file.close()

#Returns "\n" if the int entered isn't zero, otherwise "".
def cheekyNew(line):
    if line != 0:
        return "\n"
    return ""

1voto

KIDUS Sisay Points 27

Ok, voici un moyen sûr de le faire.

with open('example.txt', 'w') as f:
 for i in range(10):
  f.write(str(i+1))
  f.write('\n')

Cela permet d'écrire de 1 à 10 chaque chiffre sur une nouvelle ligne.

1voto

Pijukatel Points 21

Vous pouvez décorer la méthode d'écriture à l'endroit spécifique où vous avez besoin de ce comportement :

#Changed behavior is localized to single place.
with open('test1.txt', 'w') as file:    
    def decorate_with_new_line(method):
        def decorated(text):
            method(f'{text}\n')
        return decorated
    file.write = decorate_with_new_line(file.write)

    file.write('This will be on line 1')
    file.write('This will be on line 2')
    file.write('This will be on line 3')

#Standard behavior is not affected. No class was modified.
with open('test2.txt', 'w') as file:

    file.write('This will be on line 1')
    file.write('This will be on line 1')
    file.write('This will be on line 1')

0voto

vey Points 54

Habituellement, vous utilisez \n mais pour une raison quelconque, dans Visual Studio Code 2019 Individual, cela ne fonctionne pas. Mais vous pouvez utiliser ceci :

# Workaround to \n not working
print("lorem ipsum", file=f) **Python 3.0 onwards only!**
print >>f, "Text" **Python 2.0 and under**

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