Aşağıdaki python kodu, birkaç bin kayıttan oluşan bir sınama veri kümesinde kullandığımda iyi çalışıyor ancak yaklaşık 400 MB xml ile denediğimde bellek bitti. Satır satır okumak için bir yolu var mı? Boyutu nedeniyle xml okuma başarısız olabilir -can python satır satır okunabilir mi?
import urllib
import xml.etree.ElementTree as ET
url = raw_input('Enter - ')
value,count,total, counts =0,0,0, dict()
print "Retrieving: ", url
file=urllib.urlopen(url)
data=file.read()
print 'Retrieved',len(data),'characters'
xml=ET.fromstring(data)
tags=xml.findall('.//Postcode')
for tag in tags:
# print tag.text
count+=int(tag.text)
print 'Count: ', len(tags)
print 'Sum: ', count
Bu
sqlite3 yazma ama (o örnek kodda yukarıda bulunmayanlar DB yazma işlemine girmeden önce) testlere bir bellek hatası ile başarısız olur.özgürce başarısız Hangi parçası
İlk sorunun şudur: 'data = file.read()'. Tüm sonucu hafızaya okuyorsunuz. – dsh
https://docs.python.org/3/library/xml.etree.elementtree.html#pull-api-for-non-blocking-parsing adresine bakın ve [iterparse] referansını (https: // docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparse). İhtiyacınız olanı yapmak için urlopen'den döndürülen dosya benzeri nesneyi ElementTree.iterparse() öğesine aktarabilirsiniz. – dsh