如何使用Google Drive API一次删除多个文件

时间:2015-11-13 11:53:35

标签: python google-api google-drive-api delete-file google-api-python-client

我正在开发一个python脚本,将文件上传到我的驱动器中的特定文件夹,因为我注意到,驱动器api提供了一个很好的实现,但我确实遇到了一个问题,怎么做我一次删除多个文件?
我尝试从驱动器中抓取我想要的文件并组织他们的Id但在那里没有运气......(下面的一个片段)

dir_id = "my folder Id"
file_id = "avoid deleting this file"

dFiles = []
query = ""

#will return a list of all the files in the folder
children = service.files().list(q="'"+dir_id+"' in parents").execute()

for i in children["items"]:
    print "appending "+i["title"]

    if i["id"] != file_id: 
        #two format options I tried..

        dFiles.append(i["id"]) # will show as array of id's ["id1","id2"...]  
        query +=i["id"]+", " #will show in this format "id1, id2,..."

query = query[:-2] #to remove the finished ',' in the string

#tried both the query and str(dFiles) as arg but no luck...
service.files().delete(fileId=query).execute() 

是否可以删除所选文件(我不明白为什么它不可能,毕竟这是一个基本操作)?

提前致谢!

3 个答案:

答案 0 :(得分:2)

如果您deletetrash文件夹,它将递归删除/删除该文件夹中包含的所有文件。因此,您的代码可以大大简化:

dir_id = "my folder Id"
file_id = "avoid deleting this file"

service.files().update(fileId=file_id, addParents="root", removeParents=dir_id).execute()
service.files().delete(fileId=dir_id).execute()

这将首先将您要保留的文件移出文件夹(并进入"我的云端硬盘"),然后删除该文件夹。

注意:如果您拨打delete()而不是trash(),则该文件夹及其中的所有文件将永久删除,并且无法恢复它们!因此在将此方法与文件夹...

一起使用时要非常小心

答案 1 :(得分:2)

你可以batch multiple Drive API requests在一起。这样的事情应该可以使用Python API Client Library

if [ $(hostname) != "goodhost" ]
then
  exit
fi

答案 2 :(得分:-1)

  

Files: delete按ID永久删除 a 文件。

     

参数

     

fileId要删除的文件的ID。

File.delete一次删除一个文件中的文件,如果你想要删除多个,你必须为每个要删除的文件发送一个呼叫