话不多说,直接上代码:
#-*-coding:UTF-8-*-
import sys,os
import datetime
import time
from nt import chdir
splitHead = 'split';
def main():
print "start sc files"
global splitHead
# 100mb
signFileMax = 4 * 1024 * 1024
# delete 30 days
deleteDays = 30
path = None
if len(sys.argv) > 1:
path = sys.argv[1]
if not os.path.isdir(path):
print "dir is not exist: &s" % path
return
filelist = os.listdir(path)
for file in filelist:
# check need delete
if len(file) > 10:
try:
dt = datetime.datetime.strptime(file[0:10],"%Y-%m-%d")
if (datetime.datetime.now() - dt).days > deleteDays:
print "delete timeout file:%s" % file
os.remove(path + '\\' + file)
continue
except:
pass
if file.find(splitHead) < 0:
print "start split file:%s" % file
splitFile(path,file,signFileMax)
else:
print "please input check dir"
# 0 - max none
# max - max*1.5 rename
# max * 1.5 - spilt
def splitFile(path,file,maxsize):
global splitHead
othersize = maxsize * 1.5
pindex=file.rfind('.')
if pindex < 0:
return
filename=file[0:pindex]
filetype=file[pindex+1:len(file)]
filepath = path + '\\' + file
if os.path.isfile(filepath):
size = os.path.getsize(filepath)
if size < maxsize:
return
if size >= maxsize and size < othersize:
print "rename file:%s" % file
os.rename(filepath,'%s\\%s.%s.%s' % (path,filename,splitHead,filetype))
else:
n = (size + maxsize) / maxsize
try:
with open(filepath) as fh:
currFileSize = 0
currIndex = 0
lineBuffer = []
for line in fh:
currFileSize += len(line)
lineBuffer.append(line)
if(currFileSize > maxsize):
newfilename='%s\\%s.%s%i.%s' % (path,filename,splitHead,currIndex,filetype)
writelinetofile(newfilename,lineBuffer)
currIndex = currIndex + 1
currFileSize = 0
lineBuffer=[]
if len(lineBuffer) > 0:
newfilename='%s\\%s.%s%i.%s' % (path,filename,splitHead,currIndex,filetype)
writelinetofile(newfilename,lineBuffer)
lineBuffer=[]
except IOError as err:
print err
print "rename file:%s" % file
os.rename(filepath,'%s\\%s.%s.%s' % (path,filename,splitHead,filetype))
def writelinetofile(filename,list):
try:
with open(filename,'w') as nfh:
nfh.writelines(list)
print "create new file:%s" % filename
except IOError as ierr:
print ierr
if __name__ == '__main__':
while True:
print "start check"
main()
print "enter sleep 3600s"
time.sleep(60 * 60)