Elegant way to make all dirs in a path

前端 未结 3 745
暗喜
暗喜 2021-02-04 23:58

Here are four paths:

p1=r\'\\foo\\bar\\foobar.txt\'
p2=r\'\\foo\\bar\\foo\\foo\\foobar.txt\'
p3=r\'\\foo\\bar\\foo\\foo2\\foobar.txt\'
p4=r\'\\foo2\\bar\\foo\\fo         


        
相关标签:
3条回答
  • 2021-02-05 00:01

    You are looking for os.makedirs() which does exactly what you need.

    The documentation states:

    Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory. Raises an error exception if the leaf directory already exists or cannot be created.

    Because it fails if the leaf directory already exists you'll want to test for existence before calling os.makedirs().

    0 讨论(0)
  • 2021-02-05 00:02

    On Python 3.6+ you can do:

    import pathlib
    
    path = pathlib.Path(p4)
    path.parent.mkdir(parents=True, exist_ok=True)
    
    0 讨论(0)
  • 2021-02-05 00:20

    A simple way to build the paths in POSIX systems. Assume your path is something like: dirPath = '../foo/bar', where neither foo or bar exist:

    path = ''
    for d in dirPath.split('/'):
       # handle instances of // in string
       if not d: continue 
    
       path += d + '/'
       if not os.path.isdir(path):
          os.mkdir(path)
       
    
    0 讨论(0)
提交回复
热议问题