当前位置: 首页 > 面试题库 >

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

姜明贤
2023-03-14
问题内容

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

首先,我有一个仅包含一个字符的文本文件: 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

问题答案:

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

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

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

因此,您需要先转换ystr

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

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

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

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



 类似资料:
  • 问题内容: 我在将值写入文件时遇到以下错误。您能帮我弄清楚问题出在哪里以及如何解决吗? 错误: 问题答案: 假设您只想将字符串写入文件,请更改为或issue 。

  • 问题内容: 需要帮忙。有一个名为arglist的数据列表,例如:[‘dlink’,’des’,‘1210’,’c’,24] <-这就是“打印”视图。 这段代码: 它给: 怎么了? 问题答案: 当json.loads需要一个字符串时,您正在尝试加载文件对象。您可以使用 或者更好: 在第一个示例中,文件是打开的,但从未关闭(不好的做法)。在第二个示例中,上下文管理器在离开上下文块后关闭文件。

  • 我有一个JSON对象,我正在将它转换成一个,并在这里进行一些处理。稍后,我想将相同的缓冲区数据转换为有效的JSON对象。 我的工作节点V6.9.1 下面是我尝试过的代码,但当我转换回JSON并且无法打开此对象时,我得到了。 所以我试着用检查的方式打印整个物体 如果我试着像数组一样读取它 我试图解析它也抛出SynTaxError:意外令牌o在JSON在位置2 我需要像我创建的那样将其视为真实对象(我

  • 问题内容: 我想将一个对象保存到文件中,然后轻松地从文件中读取它。作为一个简单的示例,可以说我有以下3d数组: 是否有一个简单的Ruby API,无需编程解析器即可解释文件中的数据,就可以用来实现此目的?在示例中,我给出了一个简单的例子,但是随着对象变得越来越复杂,使对象持久化变得很烦人。 问题答案: 参见元帅:http : //ruby- doc.org/core/classes/Marshal

  • 问题内容: 我看到过很多不同的文章,涉及到您应该以何种方式将对象序列化到文件,并且所有这些在本质上在执行方式和最佳实践方面存在冲突。因此,这就是我要保存的内容: 我们可以假设configArgs的大小已知,我需要制作一个文件,这就是到目前为止的内容。 问题答案: 好吧,我想,您想将对象直接写入文件 我只是提供了重要的代码。通过异常处理来实现。

  • 问题内容: 我目前利用以下内容将文件上传到S3: 上面的方法工作正常,但我想直接将a保存到S3以从应用程序中删除几秒钟,但是我不知道如何执行此操作?这是我当前将图像保存到文件中的方式: 有没有一种方法可以直接以流的形式直接写入Amazon S3,如果可以,有人可以显示示例吗? 另外,这是个好主意吗?如果它容易出错,我将继续使用当前方法。任何建议表示赞赏。 问题答案: 以下(或类似的东西)应该可以正