Je veux ajouter une nouvelle ligne à ma chaîne chaque fois que j'appelle file.write()
. Quelle est la façon la plus simple de faire cela en Python?
Vous pouvez le faire de deux manières:
f.write("text to write\n")
ou, selon votre version Python (2 ou 3):
print >>f, "text to write" # Python 2.x
print("text to write", file=f) # Python 3.x
Vous pouvez utiliser:
file.write(your_string + '\n')
Si vous l'utilisez beaucoup (beaucoup de lignes écrites), vous pouvez sous-classer 'fichier':
class cfile(file):
#subclass file to have a more convienient use of writeline
def __init__(self, name, mode = 'r'):
self = file.__init__(self, name, mode)
def wl(self, string):
self.writelines(string + '\n')
return None
Maintenant, il offre une fonction supplémentaire wl qui fait ce que vous voulez:
fid = cfile('filename.txt', 'w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Peut-être me manque quelque chose comme des caractères de nouvelle ligne différents (\ n,\r, ...) ou que la dernière ligne se termine également par une nouvelle ligne, mais cela fonctionne pour moi.
file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
file.write("This will be added to the next line\n")
ou
log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")
vous pourriez faire:
file.write(your_string + '\n')
comme suggéré par une autre réponse, mais pourquoi utiliser la concaténation de chaînes (lente, source d'erreurs) lorsque vous pouvez appeler deux fois file.write
:
file.write(your_string)
file.write("\n")
notez que les écritures sont mises en mémoire tampon, cela revient donc à la même chose.
Juste une note, file
n'est pas supporté dans Python 3
et a été supprimé. Vous pouvez faire la même chose avec la fonction intégrée open
.
f = open('test.txt', 'w')
f.write('test\n')
C'est la solution que j'ai trouvée en essayant de résoudre ce problème pour moi-même afin de produire systématiquement des\n en tant que séparateurs. Il écrit en utilisant une liste de chaînes où chaque chaîne représente une ligne du fichier, mais il semble que cela puisse également fonctionner pour vous. (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 ""
À moins d'écrire dans des fichiers binaires, utilisez print. L'exemple ci-dessous convient au formatage de fichiers csv:
def write_row(file_, *columns):
print(*columns, sep='\t', end='\n', file=file_)
Usage:
PHI = 45
with open('file.csv', 'a+') as f:
write_row(f, 'header', 'phi:', PHI, 'serie no. 2')
write_row(f) # newline
write_row(f, data[0], data[1])
Remarques:
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/ , PEP-3101*columns
dans la définition de fonction - envoie un nombre quelconque d'arguments à la liste - voir question sur * args & ** kwargs