Python的新特性:类型为';非类型';这是不可容忍的
我是Python的新手,Python是第一个被分配到并且现在需要支持的项目:)Python似乎是一种超级友好的语言。所以请原谅我愚蠢的问题 我得到以下错误:Python的新特性:类型为';非类型';这是不可容忍的,python,Python,我是Python的新手,Python是第一个被分配到并且现在需要支持的项目:)Python似乎是一种超级友好的语言。所以请原谅我愚蠢的问题 我得到以下错误: File "AlKamelClient.py", line 316, in <module> client.main() File "AlKamelClient.py", line 296, in main self.dispatch_reply_message(self.parse_msg(msg))
File "AlKamelClient.py", line 316, in <module>
client.main()
File "AlKamelClient.py", line 296, in main
self.dispatch_reply_message(self.parse_msg(msg))
File "AlKamelClient.py", line 226, in dispatch_reply_message
self.log_to_db(message)
File "AlKamelClient.py", line 181, in log_to_db
if 'session' in data['timing']:
TypeError: argument of type 'NoneType' is not iterable
该错误意味着未设置
数据['timing']
,即设置为null/None
声明:
如果数据中有“会话”[“计时”]:
实际上迭代
数据['timing']
,但由于它是null/None,所以不能迭代它。您应该检查它是否已实际设置。问题在于数据变量明显无
。message
参数的类型是什么?相反,data['timing']
是None
。没错。谢谢你的更正。另外,我希望如果结构为try/except
。更多pythonic您可以这样测试:如果数据['timing']中的数据['timing']和'session':
。这仍然假设您在上一行的数据中测试了“计时”。
def log_to_db(self, message):
channel = message['channel']
data = message['data']
if 'timing' in data:
if 'session' in data['timing']:
if 'info' in data['timing']['session']:
pp.pprint(data['timing']['session']['info'])
self._timing_session_info.update(data['timing']['session']['info'])
self._session_id = db.timing_session_info(self._db.cursor(), db.NoneDict(self._timing_session_info))
if 'entry' in data['timing']['session']:
pp.pprint(data['timing']['session']['entry'])
db.timing_session_entry(self._db.cursor(), db.NoneDict(data['timing']['session']['entry']), self._session_id)
if 'flags' in data['timing']['session']:
pp.pprint(data['timing']['session']['flags'])
db.timing_session_flags(self._db.cursor(), db.NoneDict(data['timing']['session']['flags']), self._session_id)
if 'liveEvents' in data['timing']:
if 'fl' in data['timing']['liveEvents']:
pp.pprint(data['timing']['liveEvents']['fl'])
db.timing_liveEvents_fl(self._db.cursor(), data['timing']['liveEvents']['fl'], self._session_id)
if 'sector' in data['timing']['liveEvents']:
pp.pprint(data['timing']['liveEvents']['sector'])
db.timing_liveEvents_sector(self._db.cursor(), db.NoneDict(data['timing']['liveEvents']['sector']), self._session_id)
if 'telemEvent' in data:
pp.pprint(data['telemEvent'])
db.telemEvent(self._db.cursor(), db.NoneDict(data['telemEvent']), self._session_id)