일단 코드는요 <div><br></div> <div><br></div> <div><div># -*- coding: cp949 -*-</div> <div><br></div> <div>import sys, os, time</div> <div>import openpyxl</div> <div>from os import listdir</div> <div>from os.path import isfile, join</div> <div>import os, glob</div> <div>import pdb</div> <div>import gc</div> <div>#pdb.set_trace()</div> <div><br></div> <div>def filerun(textpath,rownum):</div> <div> f = open(textpath, 'r+',)</div> <div> row_list = []</div> <div> colnum = 1</div> <div> for row in f :</div> <div> row_list.append(row.split('#'))</div> <div> </div> <div> for col in row_list:</div> <div> for n in range(0, pNum):</div> <div> if col[0] == pList[n]:</div> <div> colnum = colnum + 1</div> <div> </div> <div> for i in range(len(title)):</div> <div> l = [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15]</div> <div> for ip in l:</div> <div> if i == ip:</div> <div> savews = savewb[i].active</div> <div> savews.cell(row=(rownum), column= (colnum) ).value = col[i]</div> <div> savews.cell(row=(rownum), column= 1 ).value = col[1]</div> <div> f.close()</div> <div><br></div> <div><br></div> <div><br></div> <div>#print log</div> <div>now = time.localtime()</div> <div>print '[' + str(now.tm_year) + '/' + str(now.tm_mon) + '/' + str(now.tm_mday) + ' ' + str(now.tm_hour) + ':' + str(now.tm_min) + ':' + str(now.tm_sec) + '] Start Process'</div> <div><br></div> <div>pNum = int(raw_input('Enter the number of station : ')) </div> <div>print 'Enter the station number : '</div> <div><br></div> <div>tmpString = raw_input()</div> <div>pList = tmpString.split(' ') </div> <div><br></div> <div>title = ['code', 'ymdhm', 'latitude', 'longitude', 'height ', 'WD1(x10)', 'WS1(x10)', 'Temp(x10)', 'humidity(x10)', 'noname1', 'seaLpress(x10)', 'precOX(x10)', 'noname2', 'DPrec(x10)', 'Prec15(x10)', 'Prec60(x10)', 'noname3', 'noname4', 'noname5']</div> <div><br></div> <div>savewb = list()</div> <div>count = list() </div> <div>for i in range(0, len(title)): </div> <div> count.append(list())</div> <div> count[i] = 1</div> <div> savewb.append(list())</div> <div> savewb[i] = openpyxl.Workbook() </div> <div><br></div> <div>#Get root directory path</div> <div>sourcepath = raw_input('Root path : ') </div> <div><br></div> <div>#Set save directory path</div> <div>savepath = raw_input('save path : ')</div> <div><br></div> <div>if not os.path.exists(savepath): </div> <div> os.makedirs(savepath)</div> <div><br></div> <div>#Get directory's file list</div> <div>for i in range(0, len(title)):</div> <div> rcount = 1</div> <div> savews = savewb[i].active</div> <div> </div> <div> for jijum in pList :</div> <div> savews.cell(row=1, column= rcount + 1).value = jijum</div> <div> rcount = rcount + 1</div> <div><br></div> <div><br></div> <div>years = listdir(sourcepath)</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div>for y in years :</div> <div> ypath = os.path.join(sourcepath, y)</div> <div> months = listdir(ypath)</div> <div> rownum1 = 2</div> <div> </div> <div> for m in months :</div> <div> ympath = os.path.join(ypath, m)</div> <div> days = listdir(ympath)</div> <div> </div> <div> for d in days :</div> <div> ymdpath = os.path.join(ympath, d)</div> <div> textfiles = [ join(ymdpath,f) for f in listdir(ymdpath) if isfile(join(ymdpath,f)) and '.txt' in f]</div> <div> </div> <div> for textfile in textfiles:</div> <div> filerun(textfile, rownum1)</div> <div> rownum1 = rownum1 + 1</div> <div><br></div> <div> gc.collect()</div> <div> </div> <div>for i in range(len(title)):</div> <div> l = [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15]</div> <div> for ip in l:</div> <div> if i == ip:</div> <div> savewb[i].save(os.path.join(savepath, (str(title[i]) + '.xlsx')))</div> <div><br></div> <div> </div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div>위와 같이 만들어진 코드이고 어떤 코드인지 설명 드리면</div> <div><br></div> <div>txt 파일 안에 있는 데이터가</div> <div><br></div> <div> <div>12#201105010000#36.5333#126.3167#45.70#0#0#125#956#10002#10056#0#0#600#0#0#0#0#=</div></div> <div><br></div> <div>이런 형식으로 약 몇백 줄 정도 있는 파일이 있습니다.</div> <div><br></div> <div>그래서 # 으로 <span style="font-size:12px;line-height:1.5;">split 한 다음에</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">가장 앞에 위치한 숫자가 타겟인데요</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div>제가 설정한 숫자가 맞을 경우 엑셀에 기록을 하여 저장을 하는 형태입니다.</div> <div><br></div> <div>그런데 돌려야할 txt 파일이 한 20기가 정도가 되는데요</div> <div><br></div> <div>MemoryError 가 뜨고</div> <div><br></div> <div>작업관리자에서 메모리 리소스를 보면 python은 2기가를 꽉 채워서 돌다가 결국 에러가 나더라구요 ㅠㅠ</div> <div><br></div> <div>적은 파일은 돌리면 이상없이 돌아가고 결과도 잘 생성되는데</div> <div><br></div> <div>한번에 다 할려고 하면 저렇게 오류가 발생 해버리는데 어떻게 처리를 해줘야 될까요 ㅠㅠ...</div> <div><br></div> <div>파일도 계속해서 close 하고 가비지콜렉터도 비워주는데 </div> <div><br></div> <div>어떻게 해야 할지...</div> <div><br></div> <div>프로그래밍 고수님의 도움이 필요합니다 ㅠㅠ</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div></div>