python3 - 根据树输出

时间:2016-07-17 16:37:20

标签: python python-3.x google-drive-api

使用Python我正在提取Google云端硬盘帐户的文件夹树,但我仍然坚持如何使用os.makedirs

在本地创建文件夹结构

以下函数当前正确输出树(我使用缩进来检查它)。这就是Google云端硬盘帐户的文件夹结构。

def tree_folder_contents(items_array, folder_id, indent):
    for item in items_array:
        if item['parents']:
            for parent in item['parents']:
                if folder_id == parent:
                    if item['mimeType'] == 'application/vnd.google-apps.folder':
                        print('     ' * indent + item['name'] + ' (indent: ' + str(indent) + ')')
                        tree_folder_contents(items_array, item['id'], indent+1)

树输出:

Folder_1 (indent: 0)
Folder_2 (indent: 0)
     Folder_2_1 (indent: 1)
          Folder_2_1_1 (indent: 2)
          Folder_2_1_2 (indent: 2)
          Folder_2_1_3 (indent: 2)
          Folder_2_1_4 (indent: 2)
Folder_3 (indent: 0)
     Folder_3_1 (indent: 1)
          Folder_3_1_1 (indent: 2)
Folder_4 (indent: 0)
Folder_5 (indent: 0)

如何将os.makedirs集成到tree_folder_contents中以便在本地创建该文件夹结构?

1 个答案:

答案 0 :(得分:0)

我添加了一个新参数folder_path,我正在使用dest_path = folder_path + item['name']行创建文件夹。

这是完整的代码:

def tree_folder_contents(items_array, folder_id, folder_path, indent):
    for item in items_array:
        if item['parents']:
            for parent in item['parents']:
                if folder_id == parent:
                    if item['mimeType'] == 'application/vnd.google-apps.folder':
                        dest_path = folder_path + item['name'].replace( '/', '_' ) + '/'

                        if not os.path.exists(dest_path):
                            os.makedirs(dest_path)

                        print('     ' * indent + item['name'] + ' (indent: ' + str(indent) + ')')
                        tree_folder_contents(items_array, item['id'], dest_path, indent+1)

首次运行tree_folder_contents时,folder_path是将在其中创建所有帐户文件夹的主目录。