gpt4 book ai didi

python - pickle.dump 遇到 RuntimeError : maximum recursion depth exceeded in cmp

转载 作者:太空狗 更新时间:2023-10-30 02:04:16 25 4
gpt4 key购买 nike

我注意到它可能是由 beautifulsoup 或递归数据结构引起的。然而,导致错误的数据结构似乎没有问题:

class Movie:
def __init__(self, name="", dscore=0, mscore=0, durl="", murl=""):
self.name = name
self.dscore = float(dscore)
self.mscore = float(mscore)
self.durl = durl
self.murl = murl
def __str__(self):
return unicode(self.name) + u' / ' + unicode(self.dscore) + u' / ' + unicode(self.mscore) \
+ u' / ' + unicode(self.durl) + u' / ' + unicode(self.murl)

导致问题的语句是:

DataDict['MovieInfo'] = MovieInfo

pickle.dump(DataDict, f, True)

函数如下:

def SaveData():
global LinkUrlQueue
global MovieSet
global MovieInfo
global LinkUrlSet
global MovieUrlQueue
DataDict = {}
DataDict['LinkUrlSet'] = LinkUrlSet
DataDict['MovieSet'] = MovieSet
#DataDict['MovieInfo'] = MovieInfo
DataDict['LinkUrlQueue'] = LinkUrlQueue
DataDict['MovieUrlQueue'] = MovieUrlQueue
f = open('MovieInfo.txt', 'wb')

for item in MovieInfo:
f.write(item.__str__().encode('utf8') + '\n'.encode('utf8'))
f.close()
try:
print 'saving data...'
f = open('spider.dat', 'wb')
pickle.dump(DataDict, f, True)
f.close()
except IOError as e:
print 'IOError, error no: %d' % e.no
print 'saved to spider2.dat'
pickle.dump(DataDict, open('spider2.dat', 'wb'))
time.sleep(10)

我的完整源代码:

蜘蛛.py:http://paste.ubuntu.com/7149731/

获取.py:http://paste.ubuntu.com/7149732/

下载运行即可。

此外,欢迎任何编码风格的建议

最佳答案

嗯...终于自己解决了这个问题...

出现这个问题的原因是pickle无法处理BEAUTIFULSOUP!!!通常,它不能处理 html 解析器。

我意识到在将参数传递给我的函数时,我应该将它们转换为 str() 或 unicode() 然后进行赋值,而不是将它们保留为 beautifulsoup 对象...

谢谢大家~

关于python - pickle.dump 遇到 RuntimeError : maximum recursion depth exceeded in cmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22626003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com