1. ホーム
  2. python

[解決済み] TypeError: 文字バッファオブジェクトを期待した - 整数をテキストファイルに保存しようとしている時

2022-02-17 08:45:32

質問

を作ろうとしています。 非常に 私のプログラムが何回実行されたかを記録するための単純な「カウンタ」です。

まず、1文字しか入っていないテキストファイルがあります。 0

次に、このファイルを開き、パースして int を追加します。 1 を値に追加し、それをテキストファイルに戻そうとする。

f = open('testfile.txt', 'r+')
x = f.read()
y = int(x) + 1
print(y)
f.write(y)
f.close()

が欲しいです。 y の値を上書きして、テキストファイルを閉じます。
しかし、私が得ることができるのは TypeError: expected a character buffer object .

編集する

パースしようとする y を文字列として返します。

f.write(str(y))

与える

IOError: [Errno 0] Error

解決方法は?

のdocstringを確認しましたか? write() ? と書いてありますね。

write(str) -> なし。 文字列strをファイルに書き込む。

バッファリングにより、フラッシュ() またはクローズ() が必要な場合があることに注意してください。 が、ディスク上のファイルに書き込まれたデータを反映させる。

ということは ystr を最初に選択します。

また、すでに古い値を読み込んでいるため、文字列はファイルの末尾にある現在の位置に書き込まれることに注意してください。使用方法 f.seek(0) でファイルの先頭に移動します。

編集 IOError , 今号 が関連しているようです。そこからの引用です。

読み込みと書き込み(または追記)の両方が許可されているモードでは (記号を含むもの)、ストリームをフラッシュ(fflush)する必要があります。 または再配置(fseek, fsetpos, rewind)のいずれかを行う。 操作の後に書き込みを行うか、書き込みを行うか。 に続いて読み出し操作を行う。

そこで、試していただきたいのが f.seek(0) で、もしかしたら問題がなくなるかもしれません。