代码之家  ›  专栏  ›  技术社区  ›  Jason Coon

Python:文件IO-禁用增量刷新

  •  3
  • Jason Coon  · 技术社区  · 17 年前

    有点与 this question .

    有没有办法告诉Python“在我告诉您之前不要写入磁盘。”(通过关闭或刷新文件)?我正在向网络上的一个文件写入数据,宁愿一次写入整个文件。

    3 回复  |  直到 9 年前
        1
  •  3
  •   Alex Martelli    17 年前

    您可以使用任意大的缓冲区打开文件。例如,要使用多达十亿字节进行缓冲, x=open('/tmp/za', 'w', 1000*1000*1000) --如果您有1000亿字节的内存,并且想全部使用,只需再添加一个*100…;-)。内存将只消耗实际需要的数量,所以,不用担心。。。

        2
  •  3
  •   nosklo    17 年前

    不,只要看一下python手册,就不会发现将缓冲区大小设置为无穷大的选项。

    您当前的解决方案基本上是相同的概念。

    你 能够 使用Alex的想法,但出于以下原因,我会冒险反对:

    1. open上的缓冲区大小限制为2^31-1或2 Gig。任何较大值都将导致“OverflowerError:long int太大,无法转换为int”
    2. a = open("blah.txt", "w", 2 ** 31 - 1)
      for i in xrange(10000): 
          a.write("a")
      

    打开文件而不关闭python,您将看到文本

        3
  •  1
  •   Colin Coghill    17 年前

    我想说这部分取决于你想做什么。

    我遇到这个问题的时候,我的应用程序有点慢 创建另一个应用程序使用的文件,另一个应用程序 将获取文件的不完整版本。

    我通过将文件写入另一个位置,然后将其重命名为正确的 一旦我写完了,我就去那个地方。

    如果你出于其他原因想这样做,那可能没用。