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 ?
Réponses
Trop de publicités?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+"))
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 ""
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')