【问题标题】:python3 - Create folder structure based on tree outputpython3 - 基于树输出创建文件夹结构
【发布时间】:2016-07-18 11:50:56
【问题描述】:

我正在使用 Python 提取 Google Drive 帐户的文件夹树,但我不知道如何使用 os.makedirs 在本地创建文件夹结构

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

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 以便在本地创建该文件夹结构?

【问题讨论】:

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


    【解决方案1】:

    我添加了一个新参数 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 是所有帐户文件夹将在其中创建的主目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2018-09-26
      • 1970-01-01
      相关资源
      最近更新 更多