TypeError:预期为字符缓冲区对象-尝试将整数保存到文本文件时

发布于 2021-01-29 19:34:16

我正在尝试创建一个 非常 简单的“计数器”,该计数器应跟踪我的程序已执行了多少次。

首先,我有一个仅包含一个字符的文本文件: 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
关注者
0
被浏览
59
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您是否检查了的文档字符串write()?它说:

    write(str)->无。将字符串str写入文件。

    请注意,由于存在缓冲,在磁盘上的文件反映写入的数据之前,可能需要flush()或close()。

    因此,您需要先转换ystr

    还要注意,该字符串将被写入文件末尾的当前位置,因为您已经读取了旧值。使用f.seek(0)去的file.`的开始

    编辑:至于IOError这个问题似乎有关。从那里引用:

    对于同时允许读取和写入(或附加)的模式(包括“
    +”号的模式),应在两次读取操作之间进行刷新(fflush)或重新定位(fseek,fsetpos,rewind)流,写入操作或写入操作,然后进行读取操作。

    所以,我建议您尝试一下f.seek(0),也许问题就消失了。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看