Réponses:
file.write(f"{var1}\n")
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')
file.write(f"my number is: {number}\n")
est très bien et lisible.
Si vous l'utilisez intensivement (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')
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 qu'il me manque quelque chose comme différents caractères de nouvelle ligne (\ n, \ r, ...) ou que la dernière ligne se termine également par une nouvelle ligne, mais cela fonctionne pour moi.
return None
dans ce cas parce que d'abord, vous n'en avez pas besoin et ensuite, chaque fonction Python retourne None
par défaut quand il n'y a pas de return
déclaration.
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, sujette aux erreurs) lorsque vous pouvez appeler file.write
deux fois:
file.write(your_string)
file.write("\n")
notez que les écritures sont tamponnées, ce qui revient au même.
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")
Juste une note, file
n'est pas pris en charge Python 3
et a été supprimé. Vous pouvez faire de même avec la open
fonction intégrée.
f = open('test.txt', 'w')
f.write('test\n')
À moins d'écrire dans des fichiers binaires, utilisez l'impression. Exemple ci-dessous, bon pour le formatage des 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 n'importe quel nombre d'arguments à lister - voir question sur * args & ** kwargsUne autre solution qui écrit à partir d'une liste à l'aide de fstring
lines = ['hello','world']
with open('filename.txt', "w") as fhandle:
for line in lines:
fhandle.write(f'{line}\n')
C'est la solution que j'ai trouvée en essayant de résoudre ce problème par moi-même afin de produire systématiquement des \ n comme séparateurs. Il écrit en utilisant une liste de chaînes où chaque chaîne est 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 ""
with open(path, "w") as file: for line in strList: file.write(line + "\n")
? De cette façon, vous pouvez supprimer tout le travail de liste, la vérification et avoir seulement 3 lignes.