如何在Google Drive API v3,Python客户端中删除文件

时间:2019-06-05 15:18:28

标签: python google-drive-api

我需要使用Google Drive API V3来删除文件。虽然V2有垃圾方法,但V3没有。相反,您需要修改文件的元数据。

我到处搜索过,但找不到答案。我在此处的stackoverflow中找到了一个适用于Android的示例,但我不知道如何将其转换为python:Google Drive Rest API v3 - how to move a file to the trash?

这是应该丢弃文件的功能:

def trashFile(service, file_id):
        # First retrieve the file from the API.
        file = service.files().get(fileId=file_id,fields="trashed" ).execute()

        # File's new metadata.
        file['trashed'] = True

        # Send the request to the API.
        updated_file = service.files().update(body=file).execute()
        return updated_file
        return None

一切正常,检索文件,文件ID正确,执行了更新命令,但文件没有被丢弃。

我该怎么办?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  • 您想通过Google Client Library使用Python的Drive API v3将文件移至垃圾箱。

我可以像上面那样理解。为了实现这一点,如何进行修改?

修改后的脚本1:

如果修改了脚本,请进行如下修改。

从:
loadProducts$ = createEffect(
    () => ({ debounce = 300, scheduler = asyncScheduler } = {}) =>
      this.actions$.pipe(
        ofType(ProductActions.LoadProducts),
        debounceTime(debounce, scheduler),
        switchMap(() => this.ProductStore.pipe(select(ProductSelectors.selectAllProducts))),
        switchMap((Products) => {
          if (Products.length != 0) {
            return ProductActions.LoadProductsSuccess({ Products });
          }

          return of(ProductActions.LoadProductsCancelled({ Products }));
        }),
        switchMap(() => this.store.pipe(select(fromRoots.getCategory))),
        switchMap((category) =>
          this.ProductService.getProducts(category.categoryId).pipe(
            map(Products => (ProductActions.LoadProductsSuccess({ Products }))),
            catchError(err => of(ProductActions.LoadProductsFailed(err))
            )
          ))));
至:
updated_file = service.files().update(body=file).execute()

修改后的脚本2:

例如,这个修改后的脚本怎么样?在这种情况下,可以通过一个API调用来实现。

updated_file = service.files().update(fileId=file_id, body=file).execute()

注意:

  • 如果您要移动回收站的文件不是您的文件,则该文件可能无法移动。请注意这一点。

参考: