How to 'ignore' an error in Python?
Chris Green
cl at isbd.net
Sat Apr 29 03:34:41 EDT 2023
Chris Angelico <rosuav at gmail.com> wrote:
> On Sat, 29 Apr 2023 at 14:27, Kushal Kumaran <kushal at locationd.net> wrote:
> >
> > On Fri, Apr 28 2023 at 04:55:41 PM, Chris Green <cl at isbd.net> wrote:
> > > I'm sure I'm missing something obvious here but I can't see an elegant
> > > way to do this. I want to create a directory, but if it exists it's
> > > not an error and the code should just continue.
> > >
> > > So, I have:-
> > >
> > > for dirname in listofdirs:
> > > try:
> > > os.mkdir(dirname)
> > > except FileExistsError:
> > > # so what can I do here that says 'carry on regardless'
> > > except:
> > > # handle any other error, which is really an error
> > >
> > > # I want code here to execute whether or not dirname exists
> > >
> > >
> > > Do I really have to use a finally: block? It feels rather clumsy.
> > >
> > > I suppose I could test if the directory exists before the os.mkdir()
> > > but again that feels a bit clumsy somehow.
> > >
> > > I suppose also I could use os.mkdirs() with exist_ok=True but again
> > > that feels vaguely wrong somehow.
> > >
> >
> > Why does exist_ok=True feel wrong to you? This is exactly what it is
> > there for.
> >
>
> Using mkdirs when you only want to make one is inviting problems of
> being subtly wrong, where it creates too many levels of directory.
> Personally, I would just do:
>
> try: os.mkdir(dirname)
> except FileExistsError: pass
>
> and not try to handle anything else at all.
>
Yes, OP here, that seems to me to be the 'right' way to do it.
Basically I hadn't realised the effect of pass in a try block and
that's why I asked the question originally.
--
Chris Green
ยท
More information about the Python-list
mailing list