对于使用Python在Windows中获取电池容量感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python获取电池电量,并且为您提供关于python在Windows8下获取本机ip地址的
对于使用Python在Windows中获取电池容量感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python获取电池电量,并且为您提供关于python在Windows8下获取本机ip地址的方法、python在windows下实现备份程序实例、Python在Windows中使用多处理进行日志logging、Python在Windows中扭曲了OpenSSL错误的宝贵知识。
本文目录一览:- 使用Python在Windows中获取电池容量(python获取电池电量)
- python在Windows8下获取本机ip地址的方法
- python在windows下实现备份程序实例
- Python在Windows中使用多处理进行日志logging
- Python在Windows中扭曲了OpenSSL错误
使用Python在Windows中获取电池容量(python获取电池电量)
我想弄清楚当前的电池容量和设计容量。
到目前为止,我能使用的是Win32_Battery()类,该类不能提供我需要的所有信息(至少在我的系统上不提供)。我为此使用了纯Python的wmi库。
另一方面,我发现此方法在Python中有效,如何检测计算机是否由电池供电?,但是很遗憾,它也没有提供有关“容量”的任何信息。
为此,电池信息结构和电池状态结构似乎很完美。现在,我知道必须使用DeviceIoControl函数来执行此操作,并且我找到了对此C
++代码进行了一些解释的函数。
我希望只使用ctypes而不是pywin32提供的python
win32api的东西。如果您有一个如何在python中执行此操作的想法,请告诉我!
提前致谢。
答案1
小编典典我相信,Tim
Golden出色的wmi模块将为您提供所需的一切。您只需要执行几个查询就可以获取所有内容:
import wmic = wmi.WMI()t = wmi.WMI(moniker = "//./root/wmi")batts1 = c.CIM_Battery(Caption = ''Portable Battery'')for i, b in enumerate(batts1): print ''Battery %d Design Capacity: %d mWh'' % (i, b.DesignCapacity or 0)batts = t.ExecQuery(''Select * from BatteryFullChargedCapacity'')for i, b in enumerate(batts): print (''Battery %d Fully Charged Capacity: %d mWh'' % (i, b.FullChargedCapacity))batts = t.ExecQuery(''Select * from BatteryStatus where Voltage > 0'')for i, b in enumerate(batts): print ''\nBattery %d ***************'' % i print ''Tag: '' + str(b.Tag) print ''Name: '' + b.InstanceName print ''PowerOnline: '' + str(b.PowerOnline) print ''Discharging: '' + str(b.Discharging) print ''Charging: '' + str(b.Charging) print ''Voltage: '' + str(b.Voltage) print ''DischargeRate: '' + str(b.DischargeRate) print ''ChargeRate: '' + str(b.ChargeRate) print ''RemainingCapacity: '' + str(b.RemainingCapacity) print ''Active: '' + str(b.Active) print ''Critical: '' + str(b.Critical)
这当然不是跨平台的,它需要第三方资源,但它确实运行良好。
python在Windows8下获取本机ip地址的方法
本文实例讲述了
import socket hostname = socket.gethostname() IPinfo = socket.gethostbyname_ex(hostname) LocalIP = IPinfo[2][2] print LocalIP
希望本文所述对大家的Python程序设计有所帮助。
python在windows下实现备份程序实例
很多书籍里面讲的Python备份都是在linux下的,而在xp上测试一下也可以执行备份功能,代码都差不多相同,就是到执行打包的时候是不一样的。而且要用到winrar,其他的压缩文件也是一样的。
首先我们要把winrar的路径添加到path里面,这里添加完了要重启机子才有效。
这里要注意:把winrar的路径添加到path里面之后一定要重启,否则path的设定不会起作用,打包就会失败!
这里用到得命令是:winrar a xxx.zip xxxx
xxx为任意字符
实例代码如下:
#备份脚本,用来备份的 #Filename:backup_ver1.py import os import time import sys #备份的源文件路径 sourc = ['G://test//test.txt'] #备份的文件所放的地方 target_dir = 'G://' #备份文件的名字 target = target_dir + time.strftime('%Y%m%d%H%M%s')+'.rar' #zip_command = "zip -qr '%s' %s" % (target,''.join(sourc)) #zip_command = "winrar a /"%s/" %s" % (target,' '.join(sourc)) zip_command="winrar a %s %s" %(target,' '.join(sourc)) print zip_command if os.system(zip_command) == 0: print '打包成功!'+target else: print '打包失败!
您可能感兴趣的文章:
- Python 备份程序代码实现
Python在Windows中使用多处理进行日志logging
我有一个相当大的Python项目,目前在Linux上运行,但我试图扩大到Windows。 我已经将代码简化为一个可以运行的完整示例来说明我的问题:我有两个类,Parent和Child。 家长被初始化,创build一个logging器,并产生一个孩子做工作:
import logging import logging.config import multiprocessing class Parent( object ): def __init__(self,logconfig): logging.config.dictConfig(logconfig) self.logger = logging.getLogger(__name__) def spawnChild(self): self.logger.info(''One'') c = Child(self.logger) c.start() class Child(multiprocessing.Process): def __init__(self,logger): multiprocessing.Process.__init__(self) self.logger = logger def run(self): self.logger.info(''Two'') if __name__ == ''__main__'': p = Parent({ ''version'':1,"handlers": { "console": { "class": "logging.StreamHandler","stream": "ext://sys.stdout" },},"root": { "level": "DEBUG","handlers": [ "console",] } } ) p.spawnChild()
在linux(特别是Ubuntu 12.04)上,我得到了以下(预期的)输出:
user@ubuntu:~$ python test.py One Two
但是,在Windows(特别是Windows 7)上,它会因酸洗错误而失败:
C:>python test.py <snip> pickle.PicklingError: Can''t pickle <type ''thread.lock''>: it''s not found as thread.lock
问题归结为Windows缺乏真正的分支,所以当在线程之间发送时,对象必须被腌制。 但是,logging器不能被腌制。 我已经尝试过使用__getstate__和__setstate__来避免酸洗,并在Child中引用名称:
在Windows机器上的IPython控制台中进行多处理 – if __name_要求
Python处理系统closures
父进程如何通过调用_exit的subprocess获得终止状态
双向消息在OS内的两个进程之间传递
在使用多处理时,在窗口中强制使用if __name __ ==“__ main__”
def __getstate__(self): d = self.__dict__.copy() if ''logger'' in d.keys(): d[''logger''] = d[''logger''].name return d def __setstate__(self,d): if ''logger'' in d.keys(): d[''logger''] = logging.getLogger(d[''logger'']) self.__dict__.update(d)
这在Linux中就像以前一样工作,现在Windows不会因PicklingError而失败。 但是,我的输出仅来自父项:
C:>python test.py One C:>
看来孩子无法使用logging器,尽pipe没有消息抱怨“没有logging器可以find处理程序''__main__''”或任何其他错误消息。 我环顾四周,有办法彻底改变我如何login我的程序,但这显然是最后的手段。 我希望我只是错过了一些明显的东西,人群的智慧可以向我指出。
Python脚本使用while循环来保持更新作业脚本,并在队列中多处理任务
多处理和垃圾收集
有没有办法来检查一个模块是否被Windows中的多处理标准模块加载?
为什么在一个多处理器中,所有的cpu都不能被均匀利用?
在进程间处理大文件的mmap和fread
在大多数情况下, Logger对象是不可选择的,因为它们在内部使用不可取的theading.Lock和/或file对象。 您尝试的解决方法确实可以避免酸洗logger ,但最终会在子进程中创建一个完全不同的Logger ,而这恰好与父Logger具有相同的名称; logging.config调用你造成的影响就会丢失。 要获得你想要的行为,你将需要在子进程中重新创建记录器, 并重新调用logging.config.dictConfig :
class Parent( object ): def __init__(self,logconfig): self.logconfig = logconfig logging.config.dictConfig(logconfig) self.logger = logging.getLogger(__name__) def spawnChild(self): self.logger.info(''One'') c = Child(self.logconfig) c.start() class Child(multiprocessing.Process): def __init__(self,logconfig): multiprocessing.Process.__init__(self) self.logconfig = logconfig def run(self): # Recreate the logger in the child logging.config.dictConfig(self.logconfig) self.logger = logging.getLogger(__name__) self.logger.info(''Two'')
或者,如果您想继续使用__getstate__ / __setstate__ :
class Parent( object ): def __init__(self,logconfig): logging.config.dictConfig(logconfig) self.logger = logging.getLogger(__name__) self.logconfig = logconfig def spawnChild(self): self.logger.info(''One'') c = Child(self.logger,self.logconfig) c.start() class Child(multiprocessing.Process): def __init__(self,logger,logconfig): multiprocessing.Process.__init__(self) self.logger = logger self.logconfig = logconfig def run(self): self.logger.info(''Two'') def __getstate__(self): d = self.__dict__.copy() if ''logger'' in d: d[''logger''] = d[''logger''].name return d def __setstate__(self,d): if ''logger'' in d: logging.config.dictConfig(d[''logconfig'']) d[''logger''] = logging.getLogger(d[''logger'']) self.__dict__.update(d)
总结
以上是小编为你收集整理的Python在Windows中使用多处理进行日志logging全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Python在Windows中扭曲了OpenSSL错误
ERROR [Failure instance: Traceback (failure with no frames): <class ''twisted.web ._newclient.ResponseNeverReceived''>: [<twisted.python.failure.Failure <class ''Op enSSL.SSL.Error''>>] ]
在Windows中,“来自OpenSSL导入SSL”工作正常.我搜索了一个没有成功的解决方案.是否需要进行一些特殊配置才能使SSL在窗口下工作?谢谢
解决方法
我们今天的关于使用Python在Windows中获取电池容量和python获取电池电量的分享就到这里,谢谢您的阅读,如果想了解更多关于python在Windows8下获取本机ip地址的方法、python在windows下实现备份程序实例、Python在Windows中使用多处理进行日志logging、Python在Windows中扭曲了OpenSSL错误的相关信息,可以在本站进行搜索。
本文标签: