Files
openalpr-base/plate_size_quota.py
silaha 4e49022164 Update plate_size_quota.py
refactored the repeated BYTES_IN_A_MEGABYTE value.
2014-08-17 22:13:37 +04:00

76 lines
1.6 KiB
Python

import os
import shutil
BYTES_IN_A_MEGABYTE = 1048576
size_quota_mb=200000
size_quota_bytes = size_quota_mb * BYTES_IN_A_MEGABYTE
dir='/var/www/html/plates/'
def get_size(start_path = '.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
total_size += os.path.getsize(fp)
return total_size
all_files = []
os.chdir(dir)
initial_dir_size = get_size()
print initial_dir_size
if (initial_dir_size <= size_quota_bytes):
dir_size_mb = float(initial_dir_size) / float(BYTES_IN_A_MEGABYTE)
print "Directory is within quota (" + str(dir_size_mb) + " / " + str(size_quota_mb) + " MB)"
exit()
for files in os.listdir("."):
#print files
#print " -- " + str(os.stat(files))
if os.path.isdir(files):
filetuple = ( os.stat(files).st_mtime, get_size(files), files)
all_files.append( filetuple )
else:
filetuple = ( os.stat(files).st_mtime, os.stat(files).st_size, files)
all_files.append( filetuple )
print "UNSORTED"
for file in all_files:
print file[0]
#print all_files
all_files.sort(key=lambda tup: tup[0])
print "SORTED"
for file in all_files:
print file[2]
bytes_left_to_delete = initial_dir_size - size_quota_bytes
for fileinfo in all_files:
if bytes_left_to_delete <= 0:
break
filename = fileinfo[2]
filebytes = fileinfo[1]
print "Deleting: " + filename + " (" + str(filebytes) + " bytes)"
if (os.path.isdir(filename)):
shutil.rmtree(filename, True)
else:
os.remove(filename)
bytes_left_to_delete = bytes_left_to_delete - filebytes