Chris Angelico <ros...@gmail.com> wrote: > On Sat, 29 Apr 2023 at 14:27, Kushal Kumaran <kus...@locationd.net> wrote: > > > > On Fri, Apr 28 2023 at 04:55:41 PM, Chris Green <c...@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 ยท -- https://mail.python.org/mailman/listinfo/python-list