随机出现的NoneType对象不可调用错误
最近我在我的应用程序中遇到了一个问题:
文件 "main.py",第31行, 在文件 "app.pyc",第205行,运行时出现 TypeError: 'NoneType'对象不可调用"
我的代码:
xml = EXML()
for pid, product in store.products.items():
xml.addRow()
xml.addCell((product['name']).encode('utf-8'), "String")
xml.addCell((product['symbol']).encode('utf-8'), "String")
xml.addCell((product['brand_name']).encode('utf-8'), "String") # line 205
xml.addCell(str(product['price']), "String")
Python 2.7 32位
这很奇怪,因为这个问题是在大约1000次迭代后出现的,之前没有任何问题。
这个应用程序是用来扫描在线商店以获取当前价格的。
一开始我以为是我哪里搞错了,导致出现了 None.encode('utf-8')
,但实际上并不是这样,空字符串 "".encode('utf-8') 似乎可以正常工作。此外,我在测试网站上无法重现这个错误,只是在处理大约2500个产品时偶尔会出现。
那么,这个错误可能还有哪些其他来源呢?
2 个回答
0
好的,问题解决了,虽然有点奇怪,但这个错误是因为 product['brand_name']
有时候会变成 BeautifulSoup.tag
(这次是
标签),而不是我预期的 BeautifulSoup.NavigableString
。我还是不明白为什么会这样,真是让人困惑。
无论如何,非常感谢你的回复。:)
1
>>> None.encode
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'encode'
>>> None()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
在这一行,你需要把两个函数中的一个设置为None
。你确定不是下一行出错吗?因为把str
这个东西覆盖掉是个很常见的错误。