Handling NameError in a list gracefully

Jesse Aldridge JesseAldridge at gmail.com
Mon Apr 20 16:48:15 EDT 2009


On Apr 20, 3:46 pm, Chris Rebert <c... at rebertia.com> wrote:
> On Mon, Apr 20, 2009 at 1:36 PM, Jesse Aldridge <JesseAldri... at gmail.com> wrote:
> > from my_paths import *
>
> > def get_selected_paths():
> >    return [home, desktop, project1, project2]
>
> > -------
>
> > So I have a function like this which returns a list containing a bunch
> > of variables.  The real list has around 50 entries.  Occasionally I'll
> > remove a variable from my_paths and cause get_selected_paths to throw
> > a NameError.  For example, say I delete the "project1" variable from
> > my_paths; now I'll get a NameError when I call get_selected_paths.
> > So everything that depends on the get_selected_paths function is
> > crashing.  I am wondering if there is an easy way to just ignore the
> > variable if it's not found.  So, in the example case I would want to
> > somehow handle the exception in a way that I end up returning just
> > [home, desktop, project2].
> > Yes, I realize there are a number of ways to reimplement this, but I'm
> > wanting to get it working with minimal changes to the code.  Any
> > suggestions?
>
> def get_selected_paths():
>     variables = "home desktop project1 project2".split()
>     vals = []
>     for var in variables:
>         try:
>             vals.append(getattr(my_paths, var))
>         except AttributeError:
>             pass
>     return vals
>
> --
> I have a blog:http://blog.rebertia.com

Hey, that's even better.  Thanks.



More information about the Python-list mailing list