j'utilise f.writelines (str (x)) pour écrire dans un fichier où x est la liste pour dire maintenant comment écrire une liste x dans un fichier en copiant chaque liste à partir de la nouvelle ligne
kaushik
2
@kaushik: f.write ('\ n'.join (x)) ou f.writelines (i +' \ n 'pour i in x)
Steven
Je pense que la méthode f.write est meilleure car elle peut être utilisée à la fois en Python 2 et 3.
vous pouvez utiliser l'utilisation, par exemple, lorsque vous écrivez un int dans un fichier, vous pouvez utiliser file.write (str (a) + '\ n')
未来 陆家嘴 顶尖 的 投资 人
@xikhari Pourquoi? file.write(f"my number is: {number}\n")est très bien et lisible.
Guimoute
25
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 writelinedef __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.
Vous n'avez pas besoin de le faire return Nonedans ce cas parce que d'abord, vous n'en avez pas besoin et ensuite, chaque fonction Python retourne Nonepar défaut quand il n'y a pas de returndéclaration.
Anna
10
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.writedeux fois:
file.write(your_string)
file.write("\n")
notez que les écritures sont tamponnées, ce qui revient au même.
L'ouverture d'un fichier avec "a" comme paramètre au lieu de "w" ne change pas l'écriture en fonction pour qu'elle fonctionne comme vous l'avez décrit. Le seul effet qu'il a est que le fichier ne sera pas écrasé et le texte sera ajouté à la ligne la plus basse au lieu de commencer en haut à gauche d'un fichier vierge.
démocidiste
2
Juste une note, filen'est pas pris en charge Python 3et a été supprimé. Vous pouvez faire de même avec la openfonction intégrée.
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""
Pourquoi pas simplement 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.
file.write(f"{var1}\n")
Vous pouvez le faire de deux manières:
ou, selon votre version Python (2 ou 3):
la source
Vous pouvez utiliser:
la source
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':
Maintenant, il offre une fonction supplémentaire wl qui fait ce que vous voulez:
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.
la source
return None
dans ce cas parce que d'abord, vous n'en avez pas besoin et ensuite, chaque fonction Python retourneNone
par défaut quand il n'y a pas dereturn
déclaration.vous pourriez faire:
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:notez que les écritures sont tamponnées, ce qui revient au même.
la source
ou
la source
Juste une note,
file
n'est pas pris en chargePython 3
et a été supprimé. Vous pouvez faire de même avec laopen
fonction intégrée.la source
À moins d'écrire dans des fichiers binaires, utilisez l'impression. Exemple ci-dessous, bon pour le formatage des fichiers csv:
Usage:
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 & ** kwargsla source
Une autre solution qui écrit à partir d'une liste à l'aide de fstring
la source
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. +)
la source
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.