Réponses:
with open("test.txt", "a") as myfile:
myfile.write("appended text")
with open(file, "a")
méthode. Je suis peut-être démodé, mais quel est l'avantage suropen(file, "a") ... file.close()
print("appended text", file=myfile)
est également possible, pour une API plus familière.
Vous devez ouvrir le fichier en mode ajout, en définissant "a" ou "ab" comme mode. Voir open () .
Lorsque vous ouvrez avec le mode "a", la position d'écriture sera toujours à la fin du fichier (un ajout). Vous pouvez ouvrir avec "a +" pour permettre la lecture, la recherche en arrière et la lecture (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 : L'utilisation de 'a' n'est pas la même chose que l'ouverture avec 'w' et la recherche à la fin du fichier - réfléchissez à ce qui pourrait arriver si un autre programme ouvrait le fichier et commençait à é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 atomiquement à la fin du fichier (même si le fichier se développe par d'autres écritures).
Quelques détails supplémentaires sur le fonctionnement du mode "a" ( testé sur Linux uniquement ). Même si vous cherchez en arrière, chaque écriture s'ajoutera à 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 déclare:
L'ouverture d'un fichier en mode ajout (a comme premier caractère du mode) provoque toutes les opérations d'écriture suivantes dans ce flux à la fin du fichier, comme si elles avaient précédé 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 voulez probablement passer "a"
comme argument de mode. Voir les documents 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 avec juste "a"
est votre meilleur pari.
file
associe une fonction intégrée. Ne l'utilisez pas pour les variables.
file
n'est plus un module intégré dans Python 3. Même dans Python 2, il est très rarement utilisé . L'ouverture d'un fichier est une opération courante. Il est correct d'utiliser le file
nom ici sur Python 2 et 3. Sachez quand être incohérent.
Python a de nombreuses variantes des trois principaux modes, 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 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")
, qui a
indique l'ajout du fichier, cela signifie permettre d'insérer des 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")
Vous pouvez également ouvrir le fichier en r+
mode, 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")
Ouverture du fichier en r+
mode vous permettre d' écrire à d' autres postes de fichiers en dehors de la fin, alors que a
et l' a+
écriture de force à la fin.
si vous souhaitez 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
. Ouvrir prend 2 arguments, le fichier que nous voulons ouvrir et une chaîne qui représente les types de permission ou d'opération que nous voulons faire sur le fichier
voici les options du mode 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 un fichier en mode ajout. Si le fichier n'existe pas, il crée un nouveau fichier. 't' C'est le mode par défaut. Il s'ouvre en mode texte. 'b' Cela s'ouvre en mode binaire. '+' Cela ouvrira un fichier pour la lecture et l'écriture (mise à jour)
Le 'a'
paramètre signifie le mode d'ajout. Si vous ne souhaitez 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 'w+'
paramètre 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 qui existe actuellement.
La façon la plus simple d'ajouter plus de texte à la fin d'un fichier serait d'utiliser:
with open('/path/to/file', 'a+') as file:
file.write("Additions to file")
file.close()
L' instruction a+
dans l' open(...)
instruction indique d'ouvrir le fichier en mode ajout et autorise l'accès en lecture et en écriture.
Il est également toujours recommandé file.close()
de fermer tous les fichiers que vous avez ouverts une fois que vous avez fini de les utiliser.
Voici mon script, qui compte essentiellement le nombre de lignes, puis les ajoute, puis les compte à nouveau pour que vous ayez des preuves que cela a fonctionné.
shortPath = "../file_to_be_appended"
short = open(shortPath, 'r')
## this counts how many line are originally in the file:
long_path = "../file_to_be_appended_to"
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines initially" %(long_path,i)
long.close()
long = open(long_path, 'a') ## now open long file to append
l = True ## will be a line
c = 0 ## count the number of lines you write
while l:
try:
l = short.next() ## when you run out of lines, this breaks and the except statement is run
c += 1
long.write(l)
except:
l = None
long.close()
print "Done!, wrote %s lines" %c
## finally, count how many lines are left.
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines after appending new lines" %(long_path, i)
long.close()