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()
期间中间创建的新目录。输入路径不是静态路径。它可以变化,所以我不能去检查它中的子目录列表或时间戳。我需要遍历整个文件系统
答案 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']
如果您还想检查/
。