如何根据数据框中定义的信息创建文件夹结构?

How to create the folder structure from info defined in a dataframe?

我创建了一个数据框,其中列出了我 Google 驱动器中的所有文件和文件夹。我已经能够将其过滤到仅文件夹。我现在想在我的本地计算机上重新创建相同的文件夹结构。

所以dataframe对于每个文件夹都有一个唯一的文件夹id#,文件夹的名称,以及每个文件夹的父文件夹的id,像这样:

我怀疑我需要使用 Python os 来递归地创建这个结构。到目前为止,我已经能够通过指定父 ID #:

创建第一级文件夹(在顶层)
parent_directory = 'test_dirs'
for row in df.itertuples():
    if getattr(row, 'parent_folder_id#') == '0':
        directory = getattr(row, 'folder_name')
        path = os.path.join(parent_directory, directory)
        os.mkdir(path)
    else:
        pass

但是我如何使这个递归能够一次创建所有嵌套文件夹?

编辑

帮助我考虑从数据框创建字典,其中键是文件夹路径(由文件夹名称组成),值是文件夹 ID,例如:

lookup = {'A': '1', 'B': '2', ..., 'A/A names/A john smith': '7'}

所以它基本上遍历数据框的每一行,在字典中检查该行的父文件夹 ID,当它找到父文件夹时,它会将该名称添加到当前文件夹名称的前面,并添加一个新条目到字典。这解决了嵌套文件夹创建问题。

代码:

lookup = {'Root': '0'}

for row in df.itertuples():
    folder_id = getattr(row, 'folder_id#')
    folder_name = getattr(row, 'folder_name')
    folder_parents = getattr(row, 'parent_folder_id#')
    path = list(lookup.keys())[list(lookup.values()).index(folder_parents)] + '/' + folder_name
    lookup[path] = folder_id
    os.makedirs(path)

只要记住你在制作它们时去过的地方:

lookup = {'0': 'test_dirs' }
for row in df.itertuples():
    parent = getattr(row, 'parent_folder_id#')
    path = os.path.join( parent, directory )
    os.mkdir(path)
    lookup[getattr(row, 'folder_id#')] = path