文章内容
2022/5/7 21:59:42,作 者: 黄兵
TypeError: 'bool' object is not subscriptable
最近在编写 Python 程序的时候,服务运行一段时间之后报如下错误:
TypeError: 'bool' object is not subscriptable
出现问题的原因:
bool 值不能有下标,出现错误的代码如下:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import requests from requests import HTTPError, ConnectionError, Timeout from json import decoder, JSONDecodeError def a(self, url): try: result = requests.get(url, timeout=100) except (ConnectionError, HTTPError, Timeout) as e: return False if result: # result值可能为None try: json_result = result.json() except decoder.JSONDecodeError: return False if json_result['status'] == 'ok': json_result_data = json_result['data'] return json_result_data def b(self): get_result = self.a('https://www.pdflibr.com') # 此处会出现错误,没有对获取的值进行判断,首先需要判断 get_a1 = get_result['a1']
上面注释已经很清楚的说明了错误产生的原因。
解决方案:
对调用的结果首先需要判断,是不是 False,修改后的代码如下:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import requests from requests import HTTPError, ConnectionError, Timeout from json import decoder, JSONDecodeError def a(self, url): try: result = requests.get(url, timeout=100) except (ConnectionError, HTTPError, Timeout) as e: return False if result: # result值可能为None try: json_result = result.json() except decoder.JSONDecodeError: return False if json_result['status'] == 'ok': json_result_data = json_result['data'] return json_result_data def b(self): get_result = self.a('https://www.pdflibr.com') # 此处会出现错误,没有对获取的值进行判断,首先需要判断 if get_result: get_a1 = get_result['a1'] else: pass
首先我们需要对调用的函数进行判断,之后才能获取下标,否则就会报如上错误。
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - TypeError: 'bool' object is not subscriptable
评论列表