Getting Battery Capacity in Windows with Python Getting Battery Capacity in Windows with Python windows windows

Getting Battery Capacity in Windows with Python


Tim Golden's excellent wmi module will, I believe, give you everything you want. You'll just have to do several queries to get everything:

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)

This is certainly not cross-platform, and it requires a 3rd party resource, but it does work very well.


The most reliable way to retrieve this information is by using GetSystemPowerStatus instead of WMI. psutil exposes this information under Linux, Windows and FreeBSD:

>>> import psutil>>>>>> def secs2hours(secs):...     mm, ss = divmod(secs, 60)...     hh, mm = divmod(mm, 60)...     return "%d:%02d:%02d" % (hh, mm, ss)...>>> battery = psutil.sensors_battery()>>> batterysbattery(percent=93, secsleft=16628, power_plugged=False)>>> print("charge = %s%%, time left = %s" % (battery.percent, secs2hours(battery.secsleft)))charge = 93%, time left = 4:37:08

The relevant commit is here.


import psutilbattery = psutil.sensors_battery()plugged = battery.power_pluggedpercent = str(battery.percent)

The variable percent will have the battery percent.I have written a small piece of code using python to notify when the battery is fully charged

https://github.com/Mitzzzzz/Battery-Full-Indicator

Kindly check!!