一个关于python调用wmi的问题

pengshi001 2011-09-06 09:52:08
我的系统是windowsXP,python版本是python2.5,安装了WMI-1.4.6.win32.exe和pywin32-216.win32-py2.5.exe,
写了一个测试文件test.py,代码如下:
# -*- coding: utf-8 -*-
import wmi

def get_all_ifaces():
try:
wmiService = wmi.WMI()

for interface in wmiService.Win32_NetworkAdapterConfiguration(IPEnabled=1):
print interface.Description
except:
pass

if __name__ == "__main__":
get_all_ifaces()

打开cmd直接运行可以获得机器中的各个网卡描述信息。
而我正在做的系统是通过apache搭建一个服务(使用了mod_python),点击完网页中的一个按钮后,使用ajax与后台python程序通信,后台python再调用get_all_ifaces这个方法,此时wmiService = wmi.WMI()这个语句就执行不过了,会直接进到except里面,有人知道应该怎么解决么
...全文
675 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2011-09-06
  • 打赏
  • 举报
回复
晕,那你就在except里把异常打出来呀……
pengshi001 2011-09-06
  • 打赏
  • 举报
回复
定位不难

# -*- coding: utf-8 -*-
import wmi

def get_all_ifaces():
iface_names = []

print "~~~~~~~~~~~~~~~~~~~~~~~"
try:
print "@@@@@@@@@@@@@@@@@@@@"
wmiService = wmi.WMI()
print "******************"

for interface in wmiService.Win32_NetworkAdapterConfiguration(IPEnabled=1):
print interface.Description

except:
print "$$$$$$$$$$$$$$$$$$"
raise IFaceError("failed to get all ifaces through wmi.WMI")
if __name__ == "__main__":
get_all_ifaces()

这是我用来调试的源程序
iambic 2011-09-06
  • 打赏
  • 举报
回复
那你要想办法拿到出错信息。

而且你是通过什么途径知道你的get_all_ifaces被调用了,并且走到了except?
pengshi001 2011-09-06
  • 打赏
  • 举报
回复
这个我不加try---except,后台也没有抛出任何错误提示
iambic 2011-09-06
  • 打赏
  • 举报
回复
别乱catch。抛错了都不知道怎么死的。
iambic 2011-09-06
  • 打赏
  • 举报
回复
windows原生api里,使用com需要调用一些api做初始化。多线程和单线程的初始化参数不一样。看起来默认情况pythoncom是做单线程初始化。
如果指定了sys.coinit_flags,就会用你提供的参数。
具体参数的意义可以看下windows api CoInitializeEx。
pengshi001 2011-09-06
  • 打赏
  • 举报
回复
解决了,Add "sys.coinit_flags = 0" after your "import sys" line and before the "import pythoncom" line,参考http://stackoverflow.com/questions/2880723/win32-exception-occurred-releasing-iunknown-at-error-using-pylons-and-wmi。不过还是不太清楚到底什么原因,抛出的异常是x_wmi_uninitialised_thread,特此记录。有知道原因的欢迎说明一下。

谢谢iambic的耐心指导。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧