Получавам грешка в паметта всеки път, когато се опитвам да пиша в csv. Така че първите 5 GB данни работят добре, но след това получавам грешка в паметта.
Не знам защо, защото се опитвам да изчистя всеки път своя елемент от паметта, така че да не се случи.
def writeDataCSV(file):
try:
with open('Data/csv/'+file+'.csv','w') as fp:
for evt, elem in iterparse('dumpData/'+str(filename)+'.xml', events=('end',)):
if elem.tag == 'row':
element_fields = elem.attrib
data = []
if(file== "Comments"):
data = commentsXML(element_fields)
wr = csv.writer(fp, dialect='excel')
wr.writerow(data)
elem.clear()
fp.close
except UnicodeEncodeError as uniError:
print(uniError)
try:
if(file== "Comments"):
df = pd.read_csv('Data/csv/Comments.csv', names=["Id","PostId","Score","Text","Date","Time","UserID"])
df.to_csv("Data/csv/Comments.csv")
except UnicodeDecodeError as uniDeError:
print(uniDeError)
MemoryError
try
/except
до частта от кода си, която смятате, че ще се провали. В момента имате 1, който покрива цялата процедура, но може да е само един ред, който се проваля, ако има такъв. - person roganjosh   schedule 30.05.2018file== "Comments"
, когато изпълнявате това? Защото изглежда, че сте изяснили само ако случаят е такъв (и когаelem.tag == 'row'
). Ако се опитвате да прочетете огромен XML файл, може да искате да започнете, като коментирате част от кода, свързан с CSV, за да стесните къде възниква проблемът. - person J. Owens   schedule 30.05.2018wr = csv.writer
никога не се затваря (или промива), особено. ако направите изключение. Винаги е по-добре да отваряте файлове с операторwith ...
.fp.close
не прави нищо, не правиfp.close()
, но във всеки случай това трябва да се случи автоматично порадиwith open(...) as fp
, но отново, ако направите изключение, може да не стане. И къде е обработката на други изключения катоMemoryError
? Преместете оператора сиwith
над стълбата try-except и се уверете, че обработвате други изключения. - person smci   schedule 30.05.2018commentsXML
, откъде идва, колко голям е и какво правиcommentsXML(element_fields)
, търсене ли е? - person smci   schedule 30.05.2018