gpt4 book ai didi

python - 写入大型二进制文件时出现内存错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:59 25 4
gpt4 key购买 nike

我研究的所有相关问题都涉及从文件读取和写入另一个文件。我正在从头开始生成一个大文件。我将在这里简化它:

import os

fo = open("example.example", "wb", 0)

fo.write ((b'\x01\x01\x01\x01')+(((b'\xff') * 1074000000)+ (b'\x01\x01\x01\x01;')))

fo.close()

这个例子应该创建一个比演出大一点的文件......我知道我需要在写入过程中使用缓冲区,但不确定如何从头开始以字节为单位简单地写入。提前致谢

最佳答案

您要求 Python 在内存中创建超过 1074000000 个字节。这在逻辑上会导致 MemoryError

import os

with open("example.example", "wb") as f:
f.write(b'\x01\x01\x01\x01')
for i in xrange(1074000000):
f.write(b'\xff')
f.write(b'\x01\x01\x01\x01;')

当然,您可以将循环中的数据写入更大的 block 以使其更有效,但现在您应该有想法了。

如果您使用 Python 3,请将 xrange 替换为 range

在 Python 2 中使用 range 可能会出现问题,因为它会尝试在内存中创建一个包含 1074000000 个整数的数组。 xrange 而是创建了一个生成器,它会一个一个地返回数字,但不会提前重新创建它们。这已成为 Pyton 3 中的标准做法,并且 xrange 已被删除,取而代之的是 range

关于python - 写入大型二进制文件时出现内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com