加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将(大量)零写入二进制文件

发布时间:2020-12-20 13:20:04 所属栏目:Python 来源:网络整理
导读:这可能是一个愚蠢的问题,但我无法找到合适的答案.我想存储(不要问为什么)(2000,2000,2000)零数组的二进制表示形式为磁盘,二进制格式.实现这一目标的传统方法是: with open('myfile','wb') as f: f.write('' * 4 * 2000 * 2000 * 2000) # 4 bytes = float3
这可能是一个愚蠢的问题,但我无法找到合适的答案.我想存储(不要问为什么)(2000,2000,2000)零数组的二进制表示形式为磁盘,二进制格式.实现这一目标的传统方法是:

with open('myfile','wb') as f:
    f.write('' * 4 * 2000 * 2000 * 2000)  # 4 bytes = float32

但这意味着要创建一个非常大的字符串,根本不需要.我知道另外两个选择:

>迭代元素并一次存储一个字节(极慢)
>创建一个numpy数组并将其刷新到磁盘(与上面示例中的字符串创建一样昂贵的内存)

我正在寻找类似write(char,ntimes)(因为它存在于C和其他语言中)以C速度复制到磁盘上,而不是以Python循环速度复制,而不必创建如此大的数组记忆.

解决方法

我不知道你为什么要对“Python的循环速度”这么大惊小怪,而是写作方式

for i in range(2000 * 2000):
     f.write('' * 4 * 2000)  # 4 bytes = float32

将告诉操作系统写入8000个0字节.写入返回后,在下一个循环运行中再次调用它.

可能是循环执行的速度比在C中稍慢,但这绝对不会产生影响.

如果可以使用稀疏文件,您也可以寻找所需文件大小的位置,然后截断文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读