回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在编码方面相对较新,在python中工作,从输出文件中获取大量(约2.0gb)的数据,并将其转换为可读的、经过排序的列表。我的主要问题是创建一个这样大小的测试文件。输入文件将是一个长数组,大约是2.56*10^8(行)乘1(列),最终结果是大约6.4*10^7(行)乘4(列)数组并显示它。为了创建一个示例数组,我使用了这段代码(注意大小不是最终的,它与我通过将大小增加2的幂所能得到的大小一样大)。在</p>
<pre><code>import numpy as np
import subprocess as subp
from array import array
keepData = 1
if(not keepData):
subp.call(['rm', 'Bertha.DAT']) #removes previous file if present
girth = int(8e6) #number of final rows
girthier = girth*4
bigger_tim = np.zeros(girthier) #initial array
File = 'Bertha.DAT'
bid = open(File, 'wb')
for ii in range(0,girth):
tiny_tim = 100*(2*np.random.rand(1,3)-1)
bigger_tim[ii*4]=4
bigger_tim[ii*4+1]=tiny_tim[0,0]
bigger_tim[ii*4+2]=tiny_tim[0,1]
bigger_tim[ii*4+3]=tiny_tim[0,2]
#for loop that inputs values in the style of the input result
line.tofile(bid) #writes into file
bid.close()
</code></pre>
<p>这段代码适用于创建250MB的文件,但是它们不能创建比这个更大的文件。非常感谢任何帮助。在</p>
<p>编辑:</p>
<p>我还添加了我的第二个代码,看看是否有一个问题,以及由于大量的内存使用。在</p>
^{pr2}$
<p>编辑:第一个代码以24e6作为“周长”值运行,但在32e6中得到以下错误:</p>
<pre><code>Traceback (most recent call last):
File "<ipython-input-1-cb13d37b70b9>", line 1, in <module>
runfile('D:/WinPython-32bit-2.7.6.3/Big_Bertha.py', wdir='D:/WinPython-32bit-2.7.6.3')
File "D:\WinPython-32bit-2.7.6.3\python-2.7.6\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "D:/WinPython-32bit-2.7.6.3/Big_Bertha.py", line 19, in <module>
bigger_tim = np.zeros(girthier) #initial array
MemoryError
</code></pre>
<p>由于内存不足,我无法创建初始虚拟矩阵来存储值。在</p>
<p>第二个问题非常相似,但在24e6处的“周长”值有不同的误差。在</p>
<pre><code>Traceback (most recent call last):
File "<ipython-input-1-268052dcc4e8>", line 1, in <module>
runfile('D:/WinPython-32bit-2.7.6.3/binaryReader.py', wdir='D:/WinPython-32bit-2.7.6.3')
File "D:\WinPython-32bit-2.7.6.3\python-2.7.6\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "D:/WinPython-32bit-2.7.6.3/binaryReader.py", line 14, in <module>
Bertha = np.fromfile('Bertha.DAT',dtype = float,count = -1, sep = "")
MemoryError
</code></pre>