web-dev-qa-db-fra.com

Comment ouvrir un fichier en lecture et en écriture?

Existe-t-il un moyen d'ouvrir un fichier à la fois en lecture et en écriture?

En guise de solution de contournement, j'ouvre le fichier en écriture, je le ferme, puis je le rouvre pour le lire. Mais existe-t-il un moyen d'ouvrir un fichier pour les deux lire et écrire?

171
bigredhat

Voici comment lire un fichier et y écrire (en écrasant toutes les données existantes) sans fermer ni rouvrir:

with open(filename, "r+") as f:
    data = f.read()
    f.seek(0)
    f.write(output)
    f.truncate()
232
Flimm

r+ est le mode canonique pour lire et écrire en même temps. Ce n’est pas différent de l’appel système fopen() puisque file()/open() n’est qu’une petite enveloppe autour de cet appel du système d’exploitation.

42
Andreas Jung

J'ai essayé quelque chose comme ça et ça marche comme prévu:

f = open("c:\\log.log", 'r+b')
f.write("\x5F\x9D\x3E")
f.read(100)
f.close()

Où:

f.read (taille) - Pour lire le contenu d’un fichier, appelez f.read (taille), qui lit un certain nombre de données et les renvoie sous forme de chaîne.

Et:

f.write (string) écrit le contenu de la chaîne dans le fichier, renvoyant None.

De plus, si vous ouvrez tutoriel Python sur la lecture et l'écriture de fichiers , vous constaterez que:

'r +' ouvre le fichier en lecture et en écriture.

Sous Windows, "b" ajouté au mode ouvre le fichier en mode binaire. Il existe donc des modes tels que "rb", "wb" et "r + b".

20
Artsiom Rudzenka