Please use the script to get monitor your disk space and get the exception when your disk space becomes full.
def ecmd(CMD, OUT=False):
import ctypes
class disable_file_system_redirection:
_disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
_revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
def __enter__(self):
self.old_value = ctypes.c_long()
self.success = self._disable(ctypes.byref(self.old_value))
def __exit__(self, type, value, traceback):
if self.success:
self._revert(self.old_value)
from subprocess import PIPE, Popen
with disable_file_system_redirection():
OBJ = Popen(CMD, shell = True, stdout = PIPE, stderr = PIPE)
out, err = OBJ.communicate()
return out.strip()
def wfile(fp, c):
import os
with open(fp, 'w') as f:
f.write(c)
if os.path.isfile(fp):
return fp
return
def tdfspace():
import re
import os
disks=re.findall('Disk\s[0-9]+', ecmd('echo list disk |diskpart'))
ddisk={}
for disk in disks:
ddisk[disk]=0
script=wfile(os.path.join(os.environ['TEMP'], disk+'.txt'), 'select '+disk+'
list volume
')
sr=ecmd('diskpart /s "'+script+'"')
volumes=re.findall('Volume\s[0-9]+\s+[A-Z]\s', sr)
for volume in volumes:
volume=volume[0:10].strip()
vscript=wfile(os.path.join(os.environ['TEMP'], volume+'.txt'), 'select '+disk+'
list volume
select '+volume+'
detail volume')
vsr=ecmd('diskpart /s "'+vscript+'"')
mo=re.search('Volume\sFree\sSpace\s+:\s+[0-9]+\s[A-Z]+', vsr)
mo1=re.search('[0-9]+', mo.group())
fspace=mo1.group()
ddisk[disk]+=int(fspace)
os.remove(vscript)
os.remove(script)
return ddisk
i=0
while True:
d=tdfspace()
import time
time.sleep(120)
for dk in d:
if d[dk]==0:
raise Exception
else:
print dk, '>>', d[dk]
print '
'
i+=1
if i==5:
i=0
Sample Exception:
Script File in JSON format,
20170315-Disk-Space-Monitor.json (2.96 KB)