有没有人曾经不得不这样做;“再平衡”;他们的Python文件搜索器?缺陷

有没有人曾经不得不这样做;“再平衡”;他们的Python文件搜索器?缺陷,python,file-io,Python,File Io,在一个非常糟糕的剧本中,我终于开始工作了,我实际上不得不重新平衡探索者 f.seek(0, 1) 在此之前,f.write()函数将写入任何“卡住”的内容。我的意思是我尝试了很多方法来解决这个问题,但唯一有效的方法就是上面这句简单的话 当然,在写操作前后,我用f.tell()检查了指针-完全相同 我使用Python2.7.3编写这个脚本。这可能是一个错误吗?我似乎厌倦了用这个。。。好。。太奇怪了。听起来确实很奇怪。我想到的唯一解释是,您没有考虑缓冲的影响 具体地说,当您向文件写入内容时,首先会

在一个非常糟糕的剧本中,我终于开始工作了,我实际上不得不重新平衡探索者

f.seek(0, 1)
在此之前,f.write()函数将写入任何“卡住”的内容。我的意思是我尝试了很多方法来解决这个问题,但唯一有效的方法就是上面这句简单的话

当然,在写操作前后,我用f.tell()检查了指针-完全相同


我使用Python2.7.3编写这个脚本。这可能是一个错误吗?我似乎厌倦了用这个。。。好。。太奇怪了。

听起来确实很奇怪。我想到的唯一解释是,您没有考虑缓冲的影响

具体地说,当您向文件写入内容时,首先会将其写入内部缓冲区。缓冲区的内容在以下情况下写入文件:

  • 缓冲区已满;或
  • 文件已关闭;或
  • 调用
    f.flush()
    ;或
  • 调用了
    f.seek()

因此,如果您在向文件写入一点数据后但在上述任何情况发生之前检查文件内容,您通常不会看到新写入的数据。

。你能生产SSCCE吗?您在尝试写入之前是否读取了该文件?在阅读和写作之间可能需要一次探索。我将尝试以某种方式利用这一事实。但它确实对我们不利,原因如下:(1)写入尚未完成,(2)文件从未关闭,(3)其他操作(查找和写入)是在之后进行的,这些操作本应将缓冲区正确清空到写入点中。。真奇怪。不管怎样,我想答案是肯定的!如果在Python3.x中不是这样的话,我可能会恢复这个功能,但是现在我需要一些旧的libs,所以都在2.7.3中。