【发布时间】:2017-08-27 03:55:55
【问题描述】:
我的小脚本处理从 url 传递的几个参数;
bright = int(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('bright', None)[0])
loops = int(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('loops', None)[0])
speed = float(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('speed', None)[0])/1000
但是,有些参数是可选的,例如 'bright' 有时不会在 url 中传递,因为它不相关。在这种情况下,它会抛出这个错误;
bright = int(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('bright', None)[0])
TypeError: 'NoneType' object has no attribute '__getitem__'
我能理解.. 它试图解析一些不存在的东西。处理这个问题的最佳方法是什么?有没有办法在尝试解析它们之前首先获取 url 中存在的参数列表?
【问题讨论】:
-
嗯...为什么不直接遍历从
parse_qs获得的参数字典以查看 url 中存在的可用参数? -
听起来像是一个计划……也许我应该试一试……然后睡一会儿……
-
您可以使用
try/except块捕获None事件并采取相应措施。 -
是的,那行得通..谢谢!
-
不相关:您多次发出相同的调用:
urlparse.parse_qs(urlparse.urlparse(self.path).query)- 执行一次,将其存储在变量中,然后重复使用!