On Thu, May 2, 2019, 9:24 PM Zhen Huang <qeejiw...@gmail.com> wrote:

> Hi ,
>
> I have a question about python build-in function 'eval ' , please check
> out the example code below :
>
> ## create a polySphere , default name : 'pSphere1'
>
> import pymel.core as pm
> from pymel.core import nt
>
> # initialize a pymel transform node
> pymelShpere = pm.PyNode('pSphere1')
> # put it to a dict
> testDict = {0:pymelShpere}
> # convert it to str which can be stored as string in file basic data
> strMark = str(testDict)
>
> # now read it back , if scene has the pShere1 , it will work perfectly
> newDict = eval(strMark)
>
> # now delete the pShpere1 , and try to convert data to dict , failed
> because the pymel nt will try to initialize the string 'pShere1' to pymel
> node
> newDict =eval(strMark)
>
>
> My question : if I have lots of nodes store in a string data which convert
> from dict , is there a way to just make it out , just ignore error part or
> if node not exists it just convert from nt to string name ?
> if pSphere2 not exist then return
>
> {0:nt.Transform('pSphere1'), 1:'pSphere2' }
>
>
>
> Any idea is very much welcome , big thanks !!!
>

I would advise staying away from the eval() approach. Not only is it going
to be inflexible for your current goal, it also can cause unwanted
execution of arbitrary logic. A random code snippet that deletes files
could be set on a node and your code would blindly execute it as your own
user. You don't want random code being evaluated like that.

A better approach would be to use a proper serialisation format like json
or pickle (protocol version 1 for ascii format). This would allow you to
read the data back into a dictionary and then evaluate each value and
filter what does and does not exist in the scene.


> --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to python_inside_maya+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/3f87dcf5-3171-47e7-bec5-a56d550513d1%40googlegroups.com
> <https://groups.google.com/d/msgid/python_inside_maya/3f87dcf5-3171-47e7-bec5-a56d550513d1%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to python_inside_maya+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA19a3TueJR%3DV5Ry%2BDJj3HpK4uqLTLHfG%3DdHqJv1%3DXKj_w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to