列出在os.makedirs()中创建的所有目录

时间:2018-03-08 16:38:18

标签: python

os.makedirs(path)递归创建所有非现有目录

有没有办法打印所有新创建的目录。 如果:

path = '/tmp/path/to/desired/directory/a/b/c'

并且/tmp/path/to/desired/directory已经存在然后应该返回:

/tmp/path/to/desired/directory/a
/tmp/path/to/desired/directory/a/b
/tmp/path/to/desired/directory/a/b/c

输入是/tmp/path/to/desired/directory/a/b/c所以我不确定直到什么级别的目录存在,所以我不能使用walk。在此示例中,/tmp/path/to/desired/可能已存在或未存在。

我不是在寻找os.walk或list子目录。我正在寻找os.makedirs()期间中间创建的新目录。输入路径不是静态路径。它可以变化,所以我不能去检查它中的子目录列表或时间戳。我需要遍历整个文件系统

1 个答案:

答案 0 :(得分:0)

在执行makedirs来电之前,您可以检查路径的每个级别是否存在:

path = '/tmp/path/to/desired/directory/a/b/c'
splitted_path = path.split('/')
subpaths = ['/'.join(splitted_path[:i]) for i in range(2,len(splitted_path)+1)]
subpaths_iter = iter(subpaths)
for subpath in subpaths_iter:
    if not os.path.exists(subpath):
        newly_created = [subpath] + list(subpaths_iter)
        os.makedirs(path)
        break
else:
    print('makedirs not needed because the path already exists')

subpaths列表如下:

['/tmp', '/tmp/path', '/tmp/path/to', '/tmp/path/to/desired', '/tmp/path/to/desired/directory', '/tmp/path/to/desired/directory/a', '/tmp/path/to/desired/directory/a/b', '/tmp/path/to/desired/directory/a/b/c']

如果您还想检查/

,可能需要进行调整