Orest Kozyar wrote: >> Please post the entire traceback (omitting duplicate lines). >> > > Sorry, I should have included the traceback. I've revised the sample script > so that it generates the traceback when run. The sample script is at the > very bottom of this email. > > ####### SCRIPT OUTPUT ####### > [kozyar]:~$ python example.py > > Successfully retrieved and parsed XML document with ID 16842423 > Successfully shelved XML document with ID 16842423 > Successfully retrieved and parsed XML document with ID 16842422 > > Traceback (most recent call last): > File "example.py", line 30, in <module> > data[badkey] = doc > File "/usr/lib64/python2.5/shelve.py", line 123, in __setitem__ > p.dump(value) > RuntimeError: maximum recursion depth exceeded > > Exception exceptions.RuntimeError: 'maximum recursion depth exceeded' in > <bound method DbfilenameShelf.__del__ of {'16842423': > <xml.dom.minidom.Document instance at 0x96f290>}> ignored > > > ####### START SCRIPT ####### > import urllib, shelve > from xml.dom import minidom > > baseurl = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?' > > params = { > 'db': 'pubmed', > 'retmode': 'xml', > 'rettype': 'medline' > } > > badkey = '16842422' > goodkey = '16842423' #or just about any other ID > > data = shelve.open('data.tmp', writeback=True) > > params['id'] = goodkey > url = baseurl + urllib.urlencode(params) > doc = minidom.parseString(urllib.urlopen(url).read()) > print 'Successfully retrieved and parsed XML document with ID %s' % goodkey > data[goodkey] = doc > print 'Successfully shelved XML document with ID %s' % goodkey > > params['id'] = badkey > url = baseurl + urllib.urlencode(params) > doc = minidom.parseString(urllib.urlopen(url).read()) > print 'Successfully retrieved and parsed XML document with ID %s' % badkey >
The problem seems to be with pickling the doc object. try adding: import pickle print pickle.dumps(doc) right here in your code. Are you sure the XML is well formed? If nothing else, you could try shelving the XML rather than the doc. > data[badkey] = doc > #Will fail on the above line > print 'Successfully shelved XML document with ID %s' % badkey > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor