如何在Python中使用Google Drive API创建新文件夹?

Ton*_*oni 5 python google-drive-api

这个例子.我可以使用MediafileUpload创建文件夹吗?我如何从中获取parent_id?

来自https://developers.google.com/drive/folder

我只知道我应该使用mime ="application/vnd.google-apps.folder"但是如何实现本教程以用Python编程?

谢谢你的建议.

Cia*_*ian 17

要在云端硬盘上创建文件夹,请尝试:

    def createRemoteFolder(self, folderName, parentID = None):
        # Create a folder on Drive, returns the newely created folders ID
        body = {
          'title': folderName,
          'mimeType': "application/vnd.google-apps.folder"
        }
        if parentID:
            body['parents'] = [{'id': parentID}]
        root_folder = drive_service.files().insert(body = body).execute()
        return root_folder['id']
Run Code Online (Sandbox Code Playgroud)

如果要在另一个文件夹中创建文件夹,则此处只需要父ID,否则只是不传递任何值.

如果您需要父ID,则需要编写一种方法来搜索Drive以查找该位置具有该父名称的文件夹(执行list()调用),然后获取该文件夹的ID.


编辑:请注意,API的v3使用"父项"字段的列表,而不是字典.此外,'title'字段更改为'name',并将insert()方法更改为create().对于v3,上面的代码将更改为以下代码:

    def createRemoteFolder(self, folderName, parentID = None):
        # Create a folder on Drive, returns the newely created folders ID
        body = {
          'name': folderName,
          'mimeType': "application/vnd.google-apps.folder"
        }
        if parentID:
            body['parents'] = [parentID]
        root_folder = drive_service.files().create(body = body).execute()
        return root_folder['id']
Run Code Online (Sandbox Code Playgroud)


Jer*_*ome 1

仅当您想插入内容时才需要上传媒体文件。由于您只想插入元数据(文件夹只是元数据),因此不需要它。带有代表源的 JSON 的常规 POST 就足够了。

您可以通过多种方式获取家长 ID:

  • 搜索(file.list终点)
  • 插入文件夹:这会返回一个表示插入文件夹的 JSON,其中包含其 ID
  • 通过 Web UI 自行获取(ID 包含在您的文件夹或文件的 URL 中):转到 Web UI,选择您想要的文件夹或文件,然后您可以识别 URL 中的 fileId。ex :https://drive.google.com/#folders/0B8VrsrGIcVbrRDVxMXFWVkdfejQ
    文件 ID 是 URL 的最后一部分,即。0B8VrsrGIcVbrRDVxMXFWVkdfejQ

如何以编程方式获取 FileID:

  1. 使用带有已知 fileId 的 Children.list 端点来获取该已知 ID 的子项的 id。
  2. 使用 google Drive 的搜索功能:带 aq 参数的 files.list 端点
  3. 使用别名:我在 Google 云端硬盘中知道的唯一别名是root您云端硬盘的根文件夹。

使用 3. 和 1.,您可以获得 Drive 的所有 fileId。

我不知道怎样才能更清楚