我试图在Python3.4中创建一个ping服务器的函数。目前它只需要在Windows(可能是XP及以上)上工作。
我发现可以使用WMI Win32_PingStatus(Reference)类ping服务器,并编写了以下函数:
import sys
if sys.platform.startswith('win32'):
import wmi
import pythoncom
def ping(ip_address):
""" Check if can ping ip address using OS ping tool"""
if sys.platform.startswith('win32'):
try:
pythoncom.CoInitialize()
c = wmi.WMI()
status_code = c.Win32_PingStatus(address=ip_address)[0].StatusCode
if status_code == 0:
successful = True
else:
successful = False
pythoncom.CoUninitialize()
except wmi.x_wmi:
# If WMI ping fails fallback
pass
else:
raise NotImplementedError
return successful
if __name__ == "__main__":
ping("127.0.0.1")
当您可以ping IP时,它返回True,当您不能ping IP时,它返回false。然而,每次运行它时,我都会在末尾出现一系列错误:
Win32 exception occurred releasing IUnknown at 0x03140980
Win32 exception occurred releasing IUnknown at 0x031635d0
Win32 exception occurred releasing IUnknown at 0x03163560
每次运行脚本时都会发生这种情况,尽管地址的前2个字节每次都会更改。最后2个字节始终保持不变。
我试着注释了代码的各个部分,并发现如果删除pythoncom.counInitialize()
,就不会出现异常。我正在使用pythoncom.coinitialize()
和pythoncom.couninitialize()
,因为我想在线程中html" target="_blank">调用函数,如下所述
我尝试添加print(pythoncom._GetInterfaceCount())
以查看存在多少个接口,并注意到每次运行函数时,接口会增加6,然后偶尔减少,但不会经常减少,不过它们不会再减少到10以下。
有没有人知道为什么会出现这种异常,以及正确的处理方法是什么?
谢谢你
我想我已经设法解决了这个问题。看来您应该只在单独的线程中调用pythoncom.coinitialize()
,因为pythoncom会在主线程http://docs.activestate.com/activepython/2.5/pywin32/pythoncom__coinitializeex_meth.html上自动调用它。
因此,我只是检查当前线程是否是主线程,如果是主线程,我就不调用pythoncom.coinitialize()
和pythoncom.couninitialize()
。
我通过Spring Boot中编写的侦听器使用JMS对象消息。我正在通过我的Camel应用程序将ObjectMessage发送到ActiveMQ队列,我正在Spring Boot应用程序中的侦听器类中侦听队列。 代码: 这是我的POJO类: 在ActiveMQ队列中,我收到的消息为: 我在Spring Boot中的JMS侦听器: 我得到一个Exception@line: 通过堆栈溢出和网络上的其他
问题内容: 尝试添加pdf文件生成时,我看到奇怪的行为。 在if语句上,以下代码将引发:both \ routes.js 错误:只能在方法调用中调用Meteor.userId。在发布函数中使用this.userId。在[对象Object] .Router处的Object.Meteor.user(packages / accounts-base / accounts_server.js:24:1)处
当我使用poi JAR在excel工作簿中写入一些数据时,代码中出现了以下异常: 我添加了以下罐子: > xmlbeans-2.4.0 poi-ooxml-schemas-3.11 poi-3.11 commons-logging-1.1 dom4j-1.6.1 log4j-1.2.17
问题内容: 我有在Android上运行良好的代码。当我将其移植到具有JRE 1.6的Windows 64位计算机上时,该代码不起作用。 当我运行以下代码行时: 我得到以下异常: java.security.NoSuchAlgorithmException:SHA256 MessageDigest在java.security.MessageDigest.getInstance(未知源)处的java.
我是Spring的新手。我正在使用SpringWebMVC开发RESTAPI。对于错误处理,我得到了这个链接http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann rest spring mvc异常 我曾尝试在我的项目中使用ResponseEntityExceptionHand
本文向大家介绍WMI入门教程之怎么使用WMI?,包括了WMI入门教程之怎么使用WMI?的使用技巧和注意事项,需要的朋友参考一下 知道了WMI是什么以后,肯定想要知道如何使用WMI干活。它能写“Hello World”吗?WMI没那么无聊,它一上来就会问你“你想要什么?”或者“你想要更改什么?”。。。 WMI工具 Windows本身提供了几个WMI工具供用户使用,包括WMIC.exe、WBEMT