# Header
import numpy as np
import struct
# Main source code
for t in range(4):
## file info
dirName = '../RawData/20150915Data_Simul_SystemReqTest/'
seed = 101
ene = 100
#t = 0
filePath = dirName + 'csv/seed' + str(seed) + '_nt_cc_t' + str(t) + '.csv'
## call data
rawData = np.loadtxt(filePath, delimiter=',', skiprows=14)
## refine data
for s in range(100):
#setChk = ((rawData[:,0])//19026509.54==s)
setChk = ((rawData[:,0]+1e9)//19026509.54==s)
det1Chk = (rawData[:,5]!=0) & setChk
det2Chk = (rawData[:,10]!=0) & setChk
coinChk = det1Chk & det2Chk
with open(dirName + 'data_' + str(ene) + 'keV_100sep/coin_' + str(ene) + 'keV_' + str(s) + '.bin', 'ab') as fcoin:
fcoin.write(struct.pack('f'*(len(coinChk.nonzero()[0])*10), *rawData[coinChk, 1:].flatten().tolist()))
with open(dirName + 'data_' + str(ene) + 'keV_100sep/evtN_' + str(ene) + 'keV_' + str(s) + '.bin', 'ab') as fevtN:
#evtNdataL = np.int32(rawData[setChk, 0]).flatten().tolist()
evtNdataL = np.int32(rawData[setChk, 0]+1e9).flatten().tolist()
evtNdataL.extend(det1Chk[setChk]+(det2Chk[setChk]*2))
evtNdata = np.array(evtNdataL).reshape([2,len(evtNdataL)/2])
evtNdataL = evtNdata.T.flatten().tolist()
fevtN.write(struct.pack('i'*len(evtNdataL), *evtNdataL))
with open(dirName + 'data_' + str(ene) + 'keV_100sep/tst1_' + str(ene) + 'keV_' + str(s) + '.bin', 'ab') as ftst1:
ftst1.write(struct.pack('f'*(len(det1Chk.nonzero()[0])), *rawData[det1Chk, 5].flatten().tolist()))
with open(dirName + 'data_' + str(ene) + 'keV_100sep/tst2_' + str(ene) + 'keV_' + str(s) + '.bin', 'ab') as ftst2:
ftst2.write(struct.pack('f'*(len(det2Chk.nonzero()[0])), *rawData[det2Chk, 10].flatten().tolist()))
print(s)
del rawData
del det1Chk, det2Chk, coinChk, setChk
print(t)
您好,
我正在尝试使用python运行文件 I / O 代码并遇到麻烦。
我在这个线程的上半部分显示的代码读取.csv
个文件,并按列分隔,并将它们写在输出文件中。
文件名是:
seed101_nt_cc_t0.csv
seed101_nt_cc_t1.csv
seed101_nt_cc_t2.csv
seed101_nt_cc_t3.csv
每个文件都是.csv
个文件, 10列,大小 3GB 。
当我运行这个程序时,计算机使用我的整个10GB的RAM,一段时间后,会出现错误信息'内存错误'。
我使用 intel i-5 CPU 和 10GB内存。
因为我的老板编写了这个程序并且他已经关闭了一段时间,我不是python用户,我不知道处理这么大的文件 I / O
我怎么解决这个问题?