web-dev-qa-db-fra.com

Mode fichier pour créer + lire + ajouter + binaire

J'ai besoin d'ouvrir un fichier pour lire et écrire. Si le fichier est introuvable, il doit être créé. Il doit également être traité comme un binaire pour Windows. Pouvez-vous me dire la séquence de mode de fichier que je dois utiliser pour cela?

J'ai essayé 'r + ab' mais cela ne crée pas les fichiers s'ils ne sont pas trouvés.

Merci

38
Mihai Damian

Le mode est ab+ le r est implicite et 'a'ppend et (' w'rite '+' 'r'ead) sont redondants. Puisque le CPython (c'est-à-dire le python normal) file est basé sur le type C stdio FILE, voici les lignes pertinentes de la page de manuel fopen (3):

  • w + Ouvert pour la lecture et l'écriture. Le fichier est créé s'il n'existe pas, sinon il est tronqué. Le flux est positionné au début du fichier.

  • a + Ouvert pour lecture et ajout (écriture en fin de fichier). Le fichier est créé s'il n'existe pas. La position initiale du fichier pour la lecture est au début du fichier, mais la sortie est toujours ajoutée à la fin du fichier.

Avec le "b" cloué pour faire plaisir au DOS. Vraisemblablement, vous voulez faire quelque chose comme ça:

>>> f = open('junk', 'ab+')
>>> f
<open file 'junk', mode 'ab+' at 0xb77e6288>
>>> f.write('hello\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.write('there\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.readline()
'there\n'
63
msw
open("filename", "a+b")

devrait marcher. Il ouvre un fichier binaire en mode ajout/mise à jour.

8
Tim Pietzcker