我是蟒蛇新手,所以请耐心等待。我写了一个脚本来检查我的3G加密狗上的运营商名称python-pyserial
基本上它看起来像这样:
def get_operator():
ID_OPSEL=('51011:XL-Axiata','51010:Telkomsel','51089:Three','51001:Indosat','INDOSAT:Indosat','51008:Axis','TELKOMSEL:Telkomsel')
if TYPE=="ZTE":
resp=send_at_wait('AT+COPS?','+COPS:',3)
if resp<>"TIMEOUT":
resp=get_value(resp,'+COPS:')
return resp.spilt('"')[1]
else:
resp= send_at_wait("AT+COPS?; +COPS?\r","+COPS:",3)
if resp<>"TIMEOUT":
resp=get_value(resp,'+COPS:')
resp=resp.split(',')
if len(resp)>2:
resp=resp[2].replace('"','')
for ln in ID_OPSEL:
if ln.find(resp)<>-1:
return ln.split(':')[1]
else:
return "Not Registered"
op=get_operator()
if "Not Registered" in op:
print "No Signal"
else:
print "Operator Name: " + op
如果有接待处,一切正常,但如果没有收件人,则脚本会返回:
Traceback (most recent call last):
File "/usr/bin/gsm", line 639, in <module>
if "Not Registered" in op:
TypeError: argument of type 'NoneType' is not iterable
我该如何解决?
答案 0 :(得分:1)
您收到此错误是因为您检查op
是否包含字符串"Not Registered"
,当op
在运行时实际上None
失败的特定运行时。
在op
和None
条款中使用if
之前,您应检查else
是否为if op is None:
print "No operator"
if "Not Registered" in op:
print "No Signal"
else:
print "Operator Name: " + op
。
这样的事情会处理这种情况:
datagridView 1
答案 1 :(得分:0)
您的op
并不总是返回字符串。
E.g。当 TYPE&lt;&gt;&#34; ZTE&#34;并且resp ==&#34; TIMEOUT&#34; ,它将(默认情况下)返回值None。
答案 2 :(得分:0)
op=get_operator()
try:
if "Not Registered" in op:
print "No Signal"
else:
print "Operator Name: " + op
except:
print("Error occored")