## Wednesday, 18 May 2011

### A Simple Nuke file loader

#!/usr/bin/python
import os

def scanForFiles(_dir) :
# grab all the files in the directory
files = os.listdir(_dir)
# create an empty dictionary for the results
result = {}
# this will hold our sorted list to be returned
sortedList = []
# these are the valid file extensions as a tuple as ends with needs it
validFiles=("tiff","tif","exr","jpg","jpeg")

# process each of the files found and see if it's in the format
# name.#####.ext
for file in files:
# so first we try and split on the . and see if we have a valid suffix
try:
prefix, frame, suffix = file.split('.')
if suffix  in validFiles :
try:
# if we do we add it to the dictionary (using the frame value)
result[prefix][0].append(frame)
except KeyError:
# we have a new file sequence, so create a new key:value pair
result[prefix] = [[frame],suffix]
except ValueError:
print "ignoring file in directory %s" %(file)

# now we have a list of data I want to return in the form that nuke needs
# in this case we need name.%xd.ext so we grab the data and format the string
for file in result :
# get the filename
fileName=file
# get the extention
extention=result[file][1]
# grab the numeric start and end values
minFrameValue=int(min(result[file][0]))
maxFrameValue=int(max(result[file][0]))
# this is a bit of a hack as the values could be different
# but we basically form the frame pad values
# add the data to the list
sortedList.append([fileNameString,minFrameValue,maxFrameValue])
# sort it and return
sortedList.sort()
return sortedList

path = nuke.getFilename("Select Directory")

files=scanForFiles(path)
print files
for fileData in files :
fileName=fileData[0].split(".")
fileName=fileName[0]
try :