Last active
August 29, 2015 13:57
-
-
Save JohannesGolf/9462793 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os, datetime, zipfile | |
def showProgramInformation(): | |
print " " | |
print "#######################################################" | |
print "Python Log-Packer.py Ver. 1.4" | |
print "Search for files, separate the .log fils, compress them" | |
print "and delete the origin file" | |
print "log-File = Files with '.log' in name" | |
print "#######################################################" | |
print " " | |
def conversationWithUser(talk): | |
print talk | |
return raw_input() | |
def doesPathExists(path): | |
if os.path.exists(path): | |
return True | |
return False | |
def isFileALogFile(filePath): | |
if filePath.find(".log") != -1: | |
return True | |
return False | |
def formatSeveralDateTime(dateTime): | |
return datetime.datetime.fromtimestamp(dateTime).strftime('%Y-%m-%d') | |
def isFileInDateRange(filePath, startDate, endDate): | |
fileDate = formatSeveralDateTime(os.path.getmtime(filePath)) | |
if fileDate >= startDate and fileDate <= endDate: | |
return True | |
return False | |
def zipLogFile(zipFilePath, zipArchivContent): | |
myzip = zipfile.ZipFile(zipFilePath + '.zip', 'w', zipfile.ZIP_DEFLATED) | |
myzip.write(zipArchivContent) | |
def isValidDate(dateToBeChecked): | |
if len(dateToBeChecked) != 10: | |
return False | |
try: | |
datetime.datetime.strptime(dateToBeChecked, '%Y-%m-%d') | |
return True | |
except ValueError: | |
return False | |
def repeatUserInputUntilValidInput(aString): | |
userInsert = False | |
while userInsert == False: | |
newString = aString.upper() | |
if newString == "Y": | |
userInsert = True | |
return True | |
elif newString == "N": | |
userInsert = True | |
return False | |
else: | |
print errorMessage | |
aString = conversationWithUser("Please insert 'Y' or 'N'!") | |
def pathNameLongerThan0(path): | |
if len(path) > 0: | |
print "Path does not exist. Please try it again!" | |
############## here starts main Program ############## | |
showProgramInformation() | |
checkIfInofsAreOk = "N" | |
errorMessage = "Your input is invalid. Please try again!" | |
while repeatUserInputUntilValidInput(checkIfInofsAreOk) == False: | |
logFolder = "" | |
logArchivFolder = "" | |
validLogFiles = [] | |
while not doesPathExists(logFolder): | |
pathNameLongerThan0(logFolder) | |
logFolder = conversationWithUser("Please enter a valid path: ") | |
userWanntDateRange = conversationWithUser("Do you want to define a Date Range? (Y/N): ") | |
if repeatUserInputUntilValidInput(userWanntDateRange): | |
dateRangeIsOk = False | |
beginDateIsOk = False | |
endDateIsOK = False | |
while not dateRangeIsOk: | |
while not beginDateIsOk: | |
userStartDate = conversationWithUser("Please enter the beginning date (e.g. 2014-05-23): ") | |
beginDateIsOk = isValidDate(userStartDate) | |
if beginDateIsOk == False: | |
print errorMessage | |
while not endDateIsOK: | |
userEndDate = conversationWithUser("Please enter the ending date (e.g. 2014-11-03): ") | |
endDateIsOK = isValidDate(userEndDate) | |
if endDateIsOK == False: | |
print errorMessage | |
if userStartDate <= userEndDate: | |
dateRangeIsOk = True | |
else: | |
print errorMessage + " \nDate out of Range. Begin again!" | |
beginDateIsOk = False | |
endDateIsOK = False | |
else: | |
userStartDate = '1900-01-01' # set as default a wide date to make all files | |
userEndDate = '2090-01-01' # set as default a wide date to make all files | |
userWanntALogArchivFolder = conversationWithUser("Do you want create a new folder or archive the files in another folder? (Y/N): ") | |
if repeatUserInputUntilValidInput(userWanntALogArchivFolder): | |
userWanntToCreatANewFolder = conversationWithUser("Do you want to create a new folder? (Y/N): ") | |
if repeatUserInputUntilValidInput(userWanntToCreatANewFolder): | |
logArchivFolder = conversationWithUser("Enter a new fullpath folder please:") | |
pathIsAbsolut = os.path.isabs(logArchivFolder) | |
while pathIsAbsolut == False: | |
print errorMessage | |
logArchivFolder = conversationWithUser("Enter a new fullpath folder please:") | |
pathIsAbsolut = os.path.isabs(logArchivFolder) | |
else: | |
logArchivFolder = conversationWithUser("Enter the fullpath folder please:") | |
while not doesPathExists(logArchivFolder): | |
pathNameLongerThan0(logArchivFolder) | |
logArchivFolder = conversationWithUser("Please enter a valid path: ") | |
else: | |
logArchivFolder = logFolder + "/" + logArchivFolder | |
print "#######################################################" | |
print "Informations " | |
print "Logfolder: " + logFolder | |
print "Stardate: " + userStartDate | |
print "Enddate: " + userEndDate | |
print "Destination: " + logArchivFolder | |
print "#######################################################" | |
checkIfInofsAreOk = conversationWithUser("Are those informations correct? (Y/N): ") | |
print "#######################################################" | |
############ here starts compress process ############ | |
for logFolder, subFolders, files in os.walk(logFolder): | |
print "#######################################################" | |
for file in files: | |
absoluteLogFilePath = logFolder + '/' + file | |
if isFileALogFile(file) and isFileInDateRange(filePath=absoluteLogFilePath, startDate=userStartDate, endDate=userEndDate): | |
validLogFiles.append(absoluteLogFilePath) | |
userFolderPath = logFolder | |
if len(validLogFiles) > 0: | |
if len(logArchivFolder) > 0: | |
if not doesPathExists(logArchivFolder): | |
os.mkdir(logArchivFolder) | |
userFolderPath = logArchivFolder | |
for logFile in validLogFiles: | |
zipFilePath = userFolderPath + '/' + os.path.basename(logFile) | |
zipLogFile(zipFilePath, logFile) | |
print logFile | |
os.remove(logFile) | |
print "#######################################################" | |
print "finish" | |
print "#######################################################" | |
quit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment