ノートPCのバッテリー残量を調べる

Windowsの場合

ctypesモジュールを使って電源関係のWin32 APIを直接呼び出します。
Cでラッパー関数を作って呼び出す方法もありますが、こっちのほうがCコンパイラが必要ないので楽に書けます。
Python2.5よりも前のバージョンでは、ctypesモジュールをhttp://sourceforge.net/projects/ctypes/からダウンロードしてインストールしてください。

from ctypes import windll
from ctypes import Structure, byref
from ctypes.wintypes import BYTE, LONG

class SystemPowerStatus(Structure):
    _fields_ = [
        ('ACLineStatus',BYTE),
        ('BatteryFlag',BYTE),
        ('BatteryLifePercent',BYTE),
        ('Reserved1',BYTE),
        ('BatteryLifeTime',LONG),
        ('BatteryFullLifeTime',LONG),
    ]

sps = SystemPowerStatus()
windll.kernel32.GetSystemPowerStatus(byref(sps))

print '容量 %4d%%' % sps.BatteryLifePercent
if sps.BatteryLifeTime < 0:
    print '充電中'
else:
    print 'あと %4d分' % (sps.BatteryLifeTime / 60)

Linuxの場合

/proc/acpi/battery/BAT0/stateがあればそれを直接読むか、あるいはacpi.pyを使います。
(編集中...)

FreeBSDの場合

sysctlから情報が得られます。
subprocessでsysctlコマンドを実行して、その標準出力をパーズするのが手軽かもしれません。

$ sysctl hw.acpi.battery
hw.acpi.battery.life: 99
hw.acpi.battery.time: 147
hw.acpi.battery.state: 1
hw.acpi.battery.units: 2
hw.acpi.battery.info_expire: 5 

ctypesをインストールすれば、次のようにアクセスできます。

from ctypes import *

libc = CDLL("libc.so")

buf = c_int()
size = c_size_t()
size.value = sizeof(buf)
libc.sysctlbyname("hw.acpi.battery.life", byref(buf), byref(size), None, 0)

print buf.value