我的目标是:开一个binary文件,将每 100 个值存储(追加)到该文件中,并继续这样做直到完成。为此,我使用以下简单循环来模拟:
import numpy as np
import random
alist=[]
c = 1
for i in range(1000):
alist.append(i)
if i == (c*100):
np.array(alist).tofile("file.bin")
print alist
c = c + 1
alist[:] = [] # clear the list before continuing
但是,当我检查尺寸时file.bin
,我觉得 numpy 不会追加,而是会替换,这不是我想要的。如何解决这个问题?
谢谢。
当然numpy
每次(重新)打开文件进行写入时都会替换/覆盖旧数据。这几乎是大多数人的普遍行为tofile()
类似函数(不仅在 numpy 中)。
解决方案:在循环之前打开一个用于写入的文件句柄并将其传递给tofile()
功能。像这样:
import numpy as np
import random
alist=[]
c = 1
with open("file.bin", "wb") as f: # or choose 'w+' mode - read "open()" documentation
for i in range(1000):
alist.append(i)
if i == (c*100):
np.array(alist).tofile(f)
print alist
c = c + 1
alist[:] = [] # clear the list before continuing
现在代码在进入循环之前打开文件并且tofile()
方法重新使用已打开的文件句柄,而不是重新打开并覆盖现有文件(在循环运行时创建)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)