#!/usr/bin/python #James Parks #"c:\python24\python.exe" "\\Nitro\vol1\dev\mayascripts\jpPython\jpOddMenOut.py" %1 # Known Weaknesses: # 1. Only works for filename.####.ext format # 2. Can't find missing frames at beginning or # end of sequences # 3. Only works if all good files are the same # size: This means no compression def jpOddMenOut(cwd): allFiles = os.listdir(cwd) allFiles.sort() allSizes = [] allNums = [] badRender = 0 #targetExts = [".tif", ".tga", ".Tif", ".Tga", ".TIF", ".TGA"] targetExts = [".tga"] for eachFile in allFiles: if eachFile == "jpOddMenOut.py": continue filename, ext = os.path.splitext(eachFile) for thisExt in targetExts: if ext == thisExt: allSizes.append(os.path.getsize(eachFile)) filename, num = os.path.splitext(filename) padding = len(num) - 1 num = num[1:] intNum = int(num) allNums.append(intNum) allSizes.sort() allNums.sort() numOfFrames = allNums[-1] - allNums[0] if numOfFrames != (len(allNums)-1): badRender = 1 elif allSizes[0] != allSizes[-1]: badRender = 1 #elif len(allSizes) != len(allFiles) # badRender = 2 #elif numOfFrames < len(allFiles) # badRender = 2 else: badRender = 0 #How to detect bad files: size doesn't match the #largest file if badRender == 1: badFiles = [] for eachFile in allFiles: thisSize = os.path.getsize(eachFile) if thisSize < allSizes[-1]: badFiles.append(eachFile) #How to detect missing Files: find first frame, #find last frame, check existence of each in between if badRender == 1: missingFiles = [] for i in range(allNums[0], allNums[-1] + 1, 1): if os.path.isfile(cwd + os.sep + filename + "." + str(i).zfill(padding) + ext) == 0: missingFiles.append(filename + "." + str(i).zfill(padding) + ext) #if badRender == 2: # print "umm,... Looks like we've got some extraneous files here sport" # input() if badRender == 1: print "-----First Frame: " + str(allNums[0]) + "\n------Last Frame: " + str(allNums[-1]) print "Bad Files:" for eachFile in badFiles: print "\t" + eachFile print "Missing Files:" for eachFile in missingFiles: print "\t" + eachFile input() if badRender == 0: print "-----First Frame: " + str(allNums[0]) + "\n------Last Frame: " + str(allNums[-1]) print "*********************************" print "No bad or missing frames detected" print "*********************************" time.sleep(5) if __name__ == '__main__': import os import time cwd = os.getcwd() jpOddMenOut(cwd)