Comment voulez-vous ajouter à un fichier en Python?
Comment voulez-vous ajouter dans le fichier au lieu de l'écraser? Existe t il une fonction qui ajoute au fichier?
OriginalL'auteur | 2011-01-16
Vous devez vous connecter pour publier un commentaire.
J'ai remarqué que beaucoup de gens sont à l'aide de la
with open(file, "a")
méthode. Je suis peut-être vieux jeu, mais quel est l'avantage par rapportopen(file, "a") ... file.close()
bluewoodtree: Les avantages sont similaires à celle de RAII en C++. Si vous oubliez de fermer(), il pourrait prendre un certain temps avant que le fichier est fermé. Il est plus facile que vous pourriez penser à l'oublier lorsque le code a de multiples points de sortie, les exceptions et ainsi de suite.
print("appended text", file=myfile)
est également possible, pour un plus familier de l'api.pas de.
open()
ne pas coder en durutf-8
. Il utiliselocale.getpreferredencoding(False)
. Passerencoding="utf-8"
paramètre explicitement si savez que le fichier utilise le codage utf-8.OriginalL'auteur Petter
Vous devez ouvrir le fichier en mode ajout, par le paramètre "a" ou "ab" comme la mode. Voir open().
Lorsque vous ouvrez avec "un" mode, la position d'écriture sera toujours être à la fin du fichier (append). Vous pouvez ouvrir avec un "+" permettant de lire, de chercher en arrière et lire (mais toutes les écritures seront toujours à la fin du fichier!).
Exemple:
Note: à l'Aide de 'a' n'est pas le même que l'ouverture avec " w " et en cherchant à la fin du fichier - envisager 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, de l'ouverture du fichier avec un " a " garantit que tous vos suivants écrit sera ajouté automatiquement à la fin du fichier (même que le fichier se développe par d'autres écritures).
Un peu plus de détails sur la façon dont la "une" mode fonctionne (testé sur Linux seulement). Même si vous rechercher en arrière, chaque écriture s'ajoute à la fin du fichier:
En fait, la
fopen
page de manuel états:Vieux simplifié de réponse (ne pas l'utiliser
with
):Exemple: (dans un vrai programme, utilisation
with
pour fermer le fichier - voir la documentation)n'avez-vous pas besoin d'un
close()
?vous devez utiliser
with
- voir docs.python.org/2/whatsnew/2.6.html#pep-343-the-with-statementutiliser "test.txt" au lieu de "test" si vous écrivez dans un fichier texte sur windows.
OriginalL'auteur sinelaw
J'ai toujours ce faire,
C'est simple, mais très utile.
"a+" est mieux que "a"
C'est moins simple que la plupart des réponses publié quelques années avant celui-ci, et il n'est plus utile
Castelijns Son joli que quelqu'un a posté une alternative à la avec la syntaxe que vous ne pouvez pas toujours utiliser si youare à l'aide de la variable à travers de multiples endroits.
Même si vous êtes de passage à la
f
variable à d'autres fonctions, la même fonction qui ouvre un fichier doit la fermer. Lewith
syntaxe est la meilleure façon de l'accomplir.OriginalL'auteur Seth Connell
Vous voulez probablement passer
"a"
que l'argument mode. Voir la documentation pour open().Il y a d'autres permutations de l'argument mode de mise à jour (+), la troncation (w) et binaire (b) le mode, mais en commençant avec seulement
"a"
est votre meilleur pari.file
les ombres d'une fonction intégrée. Ne l'utilisez pas pour les variables.n'est plus une interface en Python 3. Même en Python 2, il est très rare. L'ouverture d'un fichier est une opération courante. C'est ok pour utiliser
file
nom ici sur Python 2 et 3. Savoir quand être incohérent.OriginalL'auteur istruble
Python a beaucoup de variations à l'extérieur de la trois modes, ces trois modes sont les suivants:
Donc à ajouter à un fichier, il est aussi simple que:
Puis il y a les modes qui vient de rendre votre code moins de lignes:
Enfin, il y a les modes de lecture/écriture dans un format binaire:
OriginalL'auteur Cleve Green
lorsque nous avons à l'aide de cette ligne de
open(filename, "a")
, quea
indique l'ajout du fichier, qui permettent d'insérer des données supplémentaires pour le fichier existant.Vous pouvez simplement utiliser cette lignes suivantes pour ajouter le texte de votre fichier
OriginalL'auteur K.Suthagar
Vous pouvez également ouvrir le fichier dans
r+
mode et ensuite définir la position dans le fichier à la fin du fichier.De l'ouverture du fichier dans
r+
mode vous permettra d'écrire dans d'autres positions en plus de la fin, alors quea
eta+
la force de l'écriture à la fin.OriginalL'auteur Primusa
si vous voulez ajouter à un fichier
Nous avons déclaré la variable
myfile
pour ouvrir un fichier nommétest.txt
. Ouvrez prend 2 arguments, le fichier que nous voulons ouvrir et une chaîne qui représente le type de l'autorisation ou de l'opération, nous voulons le faire sur le fichierici est le fichier des options de mode de
OriginalL'auteur nima moradi
La
'a'
paramètre signifie en mode ajout. Si vous ne souhaitez pas utiliserwith open
à chaque fois, vous pouvez facilement écrire une fonction pour le faire pour vous:Si vous voulez écrire quelque part autre que de la fin, vous pouvez utiliser
'r+'
†:Enfin, la
'w+'
paramètre accorde encore plus de liberté. Plus précisément, il permet de créer le fichier s'il n'existe pas, ainsi que de vider le contenu d'un fichier qui existe actuellement.† Crédit pour cette fonction va à @Primusa
OriginalL'auteur Alec Alameddine
Voici mon script, qui, fondamentalement, compte le nombre de lignes, puis ajoute, compte ensuite de nouveau si vous avez des preuves qu'il a travaillé.
OriginalL'auteur travelingbones