TypeError: prévu un tampon de caractères de l'objet tout en essayant de sauver entier en fichier texte
Je suis en train de faire un très simple "compteur" qui est censé garder une trace de combien de fois mon programme a été exécutée.
D'abord, j'ai un fichier texte qui comprend une seule personnage: 0
Puis-je ouvrir le fichier, de l'analyser comme un int
, ajouter 1
de la valeur, puis essayez de le retourner pour le fichier texte:
f = open('testfile.txt', 'r+')
x = f.read()
y = int(x) + 1
print(y)
f.write(y)
f.close()
J'aimerais avoir y
remplacer la valeur dans le fichier texte, puis de le fermer.
Mais tout ce que j'obtiens est TypeError: expected a character buffer object
.
Edit:
Tentative d'analyser y
comme une chaîne de caractères:
f.write(str(y))
donne
IOError: [Errno 0] Error
Vous devez vous connecter pour publier un commentaire.
Avez-vous vérifié la docstring de
write()
? Il dit:Si vous avez besoin de convertir
y
àstr
premier.Également noter que la chaîne sera écrite à la position actuelle qui sera à la fin du fichier, parce que vous aurez déjà lu l'ancienne valeur. Utilisation
f.seek(0)
pour se placer au début du fichier.`Edit: Comme pour le
IOError
, ce problème semble lié. Une cite à partir de là:Donc, je vous suggère d'essayer
f.seek(0)
et peut-être le problème disparaît.Viens d'essayer le code ci-dessous:
Je vois que vous avez inséré "r+" ou cette commande ouvre le fichier en mode lecture, de sorte que vous ne sont pas en mesure d'écrire, alors vous devez ouvrir le fichier en mode écriture, " w " si vous voulez le remplacer
le contenu du fichier et écrire de nouvelles données, sinon, vous pouvez ajouter des données dans le fichier en utilisant 'a'
J'espère que cela va aider 😉