Nathan,
Awesome. Thanks for the re-write! I had indeed thought about collecting all of
the status messages into one message at the end. My Python skills, however, are
still very much in their infancy (only about a week or so), so I was going to
try that next. Now, I can see how you've done it - and learn a bit more! 8^)
I will definitely learn about how to use .append and .extend. I saw them in
some of the docs, but hadn't gotten that far, yet… My only scripting experience
has been with UNIX/IRIX/Linux shell scripts, so this is definitely a step up.
I'm starting to learn just enough about Python to envision that I'll be able to
actually write something useful! Still so much to learn, though… ;^)
Thanks again for taking a look!
Rich
On May 18, 2012, at 7:58 PM, Nathan Rusch wrote:
> Sorry for the delay.
>
> The only thing I see that I would definitely change is to avoid calling
> nuke.message in your loop. That will get annoying in a hurry... If you really
> want the feedback, maybe consider gathering a list of created directories and
> displaying it at the end. Other than that, just a few minor tweaks.
>
> def createWriteDirs():
> import nuke, os, errno
> created = []
> skipped = []
> for w in nuke.allNodes('Write'):
> outFile = nuke.callbacks.filenameFilter(nuke.filename(w))
> if not outFile:
> skipped.append(w.name())
> continue
> dirName = os.path.dirname(outFile)
> if w['disable'].value() or (not w.inputs()) or
> os.path.exists(dirName):
> skipped.append(w.name())
> continue
> try:
> os.makedirs(dirName)
> except OSError, e:
> if e.errno == errno.EEXIST:
> skipped.append(w.name())
> else:
> raise
> else:
> created.append((w.name(), dirName))
> result = []
> if created:
> result.append('Created %d output directories:\n' % len(created))
> result.extend([' %s: %s' % x for x in created])
> if skipped:
> result.append('\nSkipped %d nodes:\n' % len(skipped))
> result.append(', '.join(skipped))
> if result:
> nuke.message('\n'.join(result))
> else:
> nuke.message('No Write nodes found')
>
>
> -Nathan
>
>
> From: Richard Bobo
> Sent: Wednesday, May 16, 2012 7:43 PM
> To: Nuke user discussion
> Subject: Re: [Nuke-users] Python Question - How to test for disabled node…?
>
> Nathan,
>
> FYI --
>
> Here's what I came up with; yet another variation on a function to create
> Write node output directories for all the write nodes in a script -- except
> for the write nodes that are either a) disabled or b) without an input or c)
> without an output pathname or d) have an existing directory path. Of course,
> I'll add it as a menu selection… Please let me know if you see any glaring
> errors! Thanks for your help.
>
>
> def createWriteDirs():
> import nuke, os, errno
> for w in nuke.allNodes('Write'):
> name=nuke.Node.name(w)
> file=nuke.filename(w)
> if w['disable'].value()==True:
> print "%s is disabled, skipping..." %(name)
> elif w.inputs()==0:
> print "%s has no input, skipping..." %(name)
> elif file==None:
> print "%s has an empty output path, skipping..." %(name)
> elif (os.path.isdir(os.path.dirname(file))):
> print "%s path exists, skipping..." %(name)
> else:
> dir = os.path.dirname(file)
> osdir = nuke.callbacks.filenameFilter(dir)
> try:
> os.makedirs(osdir)
> except OSError, e:
> if e.errno != errno.EEXIST:
> raise
> finally:
> print "%s - created output directory:\n %s" %(name,osdir)
> nuke.message("%s - created output directory:\n %s" %(name,osdir))
> createWriteDirs()
>
>
>
> Rich
>
>
> Rich Bobo
> Senior VFX Compositor
>
> Mobile: (248) 840-2665
> Web: http://richbobo.com/
>
> "A man should never be ashamed to own that he has been in the wrong, which is
> but saying that he is wiser today than he was yesterday."
> - Alexander Pope (1688-1744) English Poet
>
>
>
>
>
>
> On May 16, 2012, at 9:13 PM, Richard Bobo wrote:
>
>> Perfect. Thanks, Nathan!
>>
>> Rich
>>
>> On May 16, 2012, at 9:10 PM, Nathan Rusch wrote:
>>
>>> node['disable'].value()
>>>
>>> If it’s True, the node is disabled.
>>>
>>> -Nathan
>>>
>>>
>>> From: Richard Bobo
>>> Sent: Wednesday, May 16, 2012 6:07 PM
>>> To: Nuke-Users Mailing List
>>> Subject: [Nuke-users] Python Question - How to test for disabled node…?
>>>
>>> Hi,
>>>
>>> Anyone know a good way to test a node to see if it is disabled? I want to
>>> be able to ignore all disabled Write nodes in my script. I figured out how
>>> to ignore unconnected nodes and nodes without any pathname, but I haven't
>>> stumbled on the method for checking if the node is disabled, yet...
>>>
>>> Thanks for any help,
>>>
>>> Rich
>>>
>>>
>>>
>>> Rich Bobo
>>> Senior VFX Compositor
>>>
>>> Mobile: (248) 840-2665
>>> Web: http://richbobo.com/
>>>
>>> "Failure is the opportunity to begin again more intelligently."
>>> - Henry Ford
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Nuke-users mailing list
>>> [email protected], http://forums.thefoundry.co.uk/
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>> _______________________________________________
>>> Nuke-users mailing list
>>> [email protected], http://forums.thefoundry.co.uk/
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>
>>
>> _______________________________________________
>> Nuke-users mailing list
>> [email protected], http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>
>
> _______________________________________________
> Nuke-users mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
> _______________________________________________
> Nuke-users mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
_______________________________________________
Nuke-users mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users