下面是一个代码片段,其中包含我正在运行的python脚本化Windows服务的错误跟踪。它似乎在Windows XP上的python 2.7中正常工作,但我使用的生产机器在Windows Server 2003上运行python 2.5。我遇到的主要错误是'error' object has no attribute 'errno'
我做的是python 2.5的根本错误适用于2.7?
Code Snip:
try:
if s == None:
s = self.connect()
char = s.recv(1)
line += char
except socket.timeout:
if s != None:
s.close()
s = None
continue
except socket.error, socket_error:
servicemanager.LogErrorMsg(traceback.format_exc())
if socket_error.errno == errno.ECONNREFUSED:
if s != None:
s.close()
time.sleep(60)
s =None
continue
else:
if s != None:
s.close()
os._exit(-1)
else:
pass
错误跟踪剪辑:
if socket_error.errno == errno.ECONNREFUSED:
AttributeError: 'error' object has no attribute 'errno'
%2: %3
答案 0 :(得分:5)
作为explained here,在python 2.6中:
在2.6版中更改:socket.error现在是IOError的子类。
并且IOError的子类具有errno
成员。
如果你想在python<中获得与你的错误相关的errno; 2.6,(并假设described here对提出socket.error的方式有效),你必须从异常的args
属性中获取它:
except socket.error, socket_error:
if socket_error.args[0] == errno.ECONNREFUSED: