Comment ajoutez-vous au fichier au lieu de l'écraser? Existe-t-il une fonction spéciale qui s’ajoute au fichier?
with open("test.txt", "a") as myfile:
myfile.write("appended text")
Vous devez ouvrir le fichier en mode annexe, en définissant "a" ou "ab" comme mode. Voir open ().
Lorsque vous ouvrez avec un mode "a", la position d'écriture sera toujours à la fin du fichier (un ajout). Vous pouvez ouvrir avec "a +" pour permettre la lecture, rechercher en arrière et lire (mais toutes les écritures seront toujours à la fin du fichier!).
Exemple:
>>> with open('test1','wb') as f:
f.write('test')
>>> with open('test1','ab') as f:
f.write('koko')
>>> with open('test1','rb') as f:
f.read()
'testkoko'
Remarque : Utiliser 'a' n'est pas la même chose que s'ouvrir avec 'w' et chercher jusqu'à la fin du fichier - réfléchissez à ce qui pourrait arriver si un autre programme ouvert le fichier et a commencé à écrire entre la recherche et l’écriture. Sur certains systèmes d’exploitation, l’ouverture du fichier avec "a" garantit que toutes vos écritures suivantes seront ajoutées de manière atomique à la fin du fichier (même si le fichier se développe d’autres écritures).
Quelques détails supplémentaires sur le fonctionnement du mode "a" ( testé uniquement sous Linux ). Même si vous revenez en arrière, chaque écriture s’ajoute à la fin du fichier:
>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'
En fait, la fopen
page de manuel indique:
L'ouverture d'un fichier en mode ajout (a comme premier caractère du mode) entraîne l'exécution de toutes les opérations d'écriture ultérieures dans ce flux en fin de fichier, comme si elles étaient précédées de l'appel:
fseek(stream, 0, SEEK_END);
with
):Exemple: ( dans un programme réel utilisez with
pour fermer le fichier - voir la documentation)
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Je fais toujours ça,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
C'est simple, mais très utile.
Vous voudrez probablement passer "a"
comme argument de mode. Voir la documentation pour open () .
with open("foo", "a") as f:
f.write("cool beans...")
Il existe d'autres permutations de l'argument mode pour la mise à jour (+), la troncature (w) et le mode binaire (b), mais commencer uniquement par "a"
est votre meilleur choix.
Python a de nombreuses variantes des trois modes principaux. Ces trois modes sont:
'w' write text
'r' read text
'a' append text
Donc, pour ajouter à un fichier c'est aussi simple que:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Ensuite, il y a les modes qui rendent juste votre code moins de lignes:
'r+' read + write text
'w+' read + write text
'a+' append + read text
Enfin, il existe les modes de lecture/écriture au format binaire:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
lorsque nous utilisons cette ligne open(filename, "a")
, que a
indique l’ajout du fichier, c’est-à-dire permettre l’insertion de données supplémentaires dans le fichier existant.
Vous pouvez simplement utiliser les lignes suivantes pour ajouter le texte dans votre fichier
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
si vous voulez ajouter à un fichier
with open("test.txt", "a") as myfile:
myfile.write("append me")
Nous avons déclaré la variable myfile
pour ouvrir un fichier nommé test.txt
. Open prend 2 arguments, le fichier que nous voulons ouvrir et une chaîne qui représente le type de permission ou d'opération que nous voulons effectuer sur le fichier.
voici les options de mode de fichier
Description du mode 'R' C'est le mode par défaut. Il ouvre le fichier pour la lecture . 'W' ce mode ouvre le fichier pour l'écriture. Si le fichier n'existe pas, il crée un nouveau fichier . Si le fichier existe, il tronque le fichier . 'X' Crée un nouveau fichier. Si le fichier existe déjà, l'opération échoue . 'A' Ouvrir le fichier en mode ajout. Si le fichier n'existe pas, il crée un nouveau fichier . 'T' Ceci est le mode par défaut. Il s'ouvre en mode texte . 'B' Ceci s'ouvre en mode binaire . '+' Ceci ouvrira un fichier en lecture et en écriture (mise à jour)
Le paramètre 'a'
signifie le mode Ajout. Si vous ne voulez pas utiliser with open
à chaque fois, vous pouvez facilement écrire une fonction pour le faire pour vous:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
Si vous voulez écrire ailleurs que la fin, vous pouvez utiliser 'r+'
†:
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Enfin, le paramètre 'w+'
accorde encore plus de liberté. Plus précisément, il vous permet de créer le fichier s’il n’existe pas, ainsi que de vider le contenu d’un fichier existant.
Vous pouvez également ouvrir le fichier en mode r+
, puis définir la position du fichier à la fin du fichier.
import os
with open('text.txt', 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
L'ouverture du fichier en mode r+
vous permettra d'écrire sur d'autres positions de fichier que la fin, tandis que a
et a+
forceront l'écriture à la fin.