使用 PyDrive 按扩展名删除 google 个驱动文件
Delete google drive files by extension with PyDrive
我正在尝试从 google 驱动器文件夹中删除扩展名为“.pdf”的所有文件。
API 身份验证一切正常,我可以上传文件。问题是删除。
我上传
upload_file = 'Test1.pdf'
gfile = drive.CreateFile({'parents': [{'id': '11SsSKYEATgn_VWzSb-8RjRL-VoIxvamC'}]})
gfile.SetContentFile(upload_file)
gfile.Upload()
这里我尝试删除
delfile = drive.CreateFile({'parents': [{'id': '11SsSKYEATgn_VWzSb-8RjRL-VoIxvamC'}]})
filedel = "*.pdf"
delfile.SetContentFile(filedel)
delfile.Delete()
错误:
Traceback (most recent call last):
File "C:/Users/linol/Documents/ProjetoRPA-Python/RPA-TESTE.py", line 40, in <module>
delfile.SetContentFile(filedel)
File "C:\Users\linol\Documents\ProjetoRPA-Python\venv\lib\site-packages\pydrive\files.py", line 175, in SetContentFile
self.content = open(filename, 'rb')
OSError: [Errno 22] Invalid argument: '*.pdf'
我认为您的目标和现状如下。
- 您想删除特定文件夹中的PDF文件。
- 您想使用 pydrive 实现此目的 python。
- 您已经能够使用驱动器 API.Google 获取和放置 Google 驱动器的值。
在这种情况下,我想提出以下流程。
- 从特定文件夹中检索 PDF 文件的文件列表。
- 使用文件列表删除文件。
当上面的流程反映到脚本中,就变成了下面的样子。
示例脚本:
请将###
修改为您的文件夹ID。
# 1. Retrieve file list of PDF file from the specific folder.
fileList = drive.ListFile({'q': "'###' in parents and mimeType='application/pdf'"}).GetList()
# 2. Delete the files using the file list.
for e in fileList:
drive.CreateFile({'id': e['id']}).Trash()
# drive.CreateFile({'id': e['id']}).Delete() # When you use this, the files are completely deleted. Please be careful this.
- 此示例脚本使用 mimeType 检索文件。当您想使用文件名检索文件时,您还可以使用
fileList = drive.ListFile({'q': "'###' in parents and title contains '.pdf'"}).GetList()
.
- 重要提示:在此示例脚本中,当使用
Delete()
时,文件将从 Google 驱动器中完全删除。所以一开始,我想推荐使用 Trash()
而不是 Delete()
作为脚本的测试。这样,文件不会被删除并移至垃圾箱。至此,我认为您可以测试脚本。
注:
- PyDrive 似乎使用 Drive API v2。请注意这一点。
参考:
我正在尝试从 google 驱动器文件夹中删除扩展名为“.pdf”的所有文件。 API 身份验证一切正常,我可以上传文件。问题是删除。
我上传
upload_file = 'Test1.pdf'
gfile = drive.CreateFile({'parents': [{'id': '11SsSKYEATgn_VWzSb-8RjRL-VoIxvamC'}]})
gfile.SetContentFile(upload_file)
gfile.Upload()
这里我尝试删除
delfile = drive.CreateFile({'parents': [{'id': '11SsSKYEATgn_VWzSb-8RjRL-VoIxvamC'}]})
filedel = "*.pdf"
delfile.SetContentFile(filedel)
delfile.Delete()
错误:
Traceback (most recent call last):
File "C:/Users/linol/Documents/ProjetoRPA-Python/RPA-TESTE.py", line 40, in <module>
delfile.SetContentFile(filedel)
File "C:\Users\linol\Documents\ProjetoRPA-Python\venv\lib\site-packages\pydrive\files.py", line 175, in SetContentFile
self.content = open(filename, 'rb')
OSError: [Errno 22] Invalid argument: '*.pdf'
我认为您的目标和现状如下。
- 您想删除特定文件夹中的PDF文件。
- 您想使用 pydrive 实现此目的 python。
- 您已经能够使用驱动器 API.Google 获取和放置 Google 驱动器的值。
在这种情况下,我想提出以下流程。
- 从特定文件夹中检索 PDF 文件的文件列表。
- 使用文件列表删除文件。
当上面的流程反映到脚本中,就变成了下面的样子。
示例脚本:
请将###
修改为您的文件夹ID。
# 1. Retrieve file list of PDF file from the specific folder.
fileList = drive.ListFile({'q': "'###' in parents and mimeType='application/pdf'"}).GetList()
# 2. Delete the files using the file list.
for e in fileList:
drive.CreateFile({'id': e['id']}).Trash()
# drive.CreateFile({'id': e['id']}).Delete() # When you use this, the files are completely deleted. Please be careful this.
- 此示例脚本使用 mimeType 检索文件。当您想使用文件名检索文件时,您还可以使用
fileList = drive.ListFile({'q': "'###' in parents and title contains '.pdf'"}).GetList()
. - 重要提示:在此示例脚本中,当使用
Delete()
时,文件将从 Google 驱动器中完全删除。所以一开始,我想推荐使用Trash()
而不是Delete()
作为脚本的测试。这样,文件不会被删除并移至垃圾箱。至此,我认为您可以测试脚本。
注:
- PyDrive 似乎使用 Drive API v2。请注意这一点。