Here are a couple example tips I made on referencing files in Maya using python, there may be some bugs.
Hope they are helpful.
cheers,
Nate
##@file reference.py # #(Tested Maya 2008) # #@author Nathaniel Anozie # #@note Inpired By Bryan Ewert (xyz2 dot net) for learning about deferred reference node and load state # # ## import os import maya.cmds as cmds ##reference specified maya file of form .ma in a currently opened maya scene, use given namespace # #@note by default it will skip any non .ma files # ## def referenceFile( f = '/Users/noa/Desktop/temp/untitled1.ma', name = 'temp1'): #is file referenced # isFileReferenced = False """ #this was here if didnt want to allow referencing in the same file multiple times #but becuasue i thought it may be helfpul to do that i commented this out # allReferencedFiles = cmds.file(query=True,reference=True) #using python's sets to find whether our maya file is in list of all referenced files if len( set(allReferencedFiles).intersection([f]) ) == 1: isFileReferenced = True """ #search of file # isMayaFile = False isMayaFile = getIsFile(file=f,maya=True) if not isFileReferenced: print 'Great, looking for file >>%s since it is not referenced' %f if isMayaFile: print 'Great, referencing file >>%s' %f cmds.file(f,reference=True,namespace=name) else: 'Requires existing .ma file to Reference >> %s' %f ##set load state of specified referenced file with option to completely remove it # #@note when referencing from the same file multiple times get something like #[u'/Users/noa/Desktop/temp/untitled1.ma', u'/Users/noa/Desktop/temp/untitled1.ma{1}'] and the one with #parenthesis needs to be fed to this ## def setLoadOnReferencedFile( f = '/Users/noa/Desktop/temp/untitled1.ma', load = True ): #loading of file # isLoaded = False #get loaded code # refNode = '' try: refNode = cmds.referenceQuery(f,rfn=True) #if reference node not deferred then it is loaded if not cmds.file(rfn = refNode, q = True, dr = True): isLoaded = True if (isLoaded == False) and load: print 'Great, loading file from unloaded state' cmds.file(rfn = refNode, lr = True) elif isLoaded and (load == False): print 'Great, un loading file from loaded state' cmds.file(rfn = refNode, ur = True) except RuntimeError: print 'Requires a referenced maya file >> %s in open scene to check load status' %f ##remove a referenced file completely from scene (unloads and removes it) # ## def removeReferencedFile( f = '/Users/noa/Desktop/temp/untitled1.ma' ): #loading of file # isLoaded = False isMayaFile = False isMayaFile = getIsFile(file=f,maya=True) if isMayaFile: #get loaded code # try: refNode = cmds.referenceQuery(f,rfn=True) #removing file from scene #cmds.file(rfn = refNode, ur = True) cmds.file(f,removeReference = True) except RuntimeError: print 'Requires a referenced maya file >> %s in open scene' %f else: print 'Requires existing .ma file for removal>> %s' %f ##get True only when file is existing and is of good type, currently only supports Maya type # ## def getIsFile( file = '/Users/noa/Desktop/temp/untitled1.ma', maya=True): mayaExt = '.ma' result = False #doing this so dont overwrite a directory or file etc filePath, fileName = os.path.split(file) #make sure have a maya file were writing to fileBaseName, fileExtension = os.path.splitext(fileName) if os.path.isdir(filePath) & (fileExtension == mayaExt): if os.path.isfile(file): print 'Great Found Maya File To Reference >> %s\n' %fileName result = True return result