如何使用 Google Drive API 识别和删除大型 Google Takeout ZIP 文件?
身体: 我遇到一个问题:Google Takeout 不断在我的 Google 云端硬盘中创建大型 ZIP 文件,导致其达到存储限制。我需要使用 Google Drive API 以编程方式识别和删除这些文件。
我注意到文件名遵循类似 takeout-YYYYMMDDTHHMMSSZ-###.zip 的模式,我想:
列出我的 Google 云端硬盘中的所有文件。 识别与模式 takeout-*.zip 匹配的文件。 删除已识别的文件以释放空间。 这是我到目前为止所做的:
我已经设置了一个 Google Cloud 项目并启用了 Google Drive API。 我有服务帐户凭据并且可以通过 API 进行身份验证。 有人可以提供执行上述步骤的 Python 示例脚本吗?任何有关有效处理大量文件的其他提示也将不胜感激。
我有: Python 复制代码
from google.oauth2 import service_account
from googleapiclient.discovery import build
# Define the scope
SCOPES = ['https://www.googleapis.com/auth/drive']
# Provide the path to your service account key file
SERVICE_ACCOUNT_FILE = 'path/to/service_account.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# Create the Drive API service
service = build('drive', 'v3', credentials=credentials)
# List all files
results = service.files().list(
pageSize=1000, fields="nextPageToken, files(id, name, size, modifiedTime)").execute()
items = results.get('files', [])
if not items:
print('No files found.')
else:
print('Files:')
for item in items:
print(f'{item["name"]} ({item["id"]}) - {item["modifiedTime"]} - {item["size"]}')
# Optionally, delete old files based on a condition
for item in items:
if 'takeout' in item['name']:
# Add your condition to delete older files
service.files().delete(fileId=item['id']).execute()
print(f'Deleted {item["name"]}')
问题:
如何修改此脚本以有效识别并仅删除 takeout-*.zip 文件?
处理大量文件时我应该考虑哪些优化或最佳实践?
您可以使用Simple Drive套件来解决这个问题。
pip 安装简单驱动器
from simple_drive import Auth, Drive, SearchTerms
auth = Auth.from_service_account_file(file='service_account.json')
drive = Drive(auth, verbose=True)
files = drive.Files.list(SearchTerms.name_contains('takeout-'))
# Use Pandas to review files and filter more details by your self.
# import pandas as pd
# df = pd.DataFrame(files)
for file in files:
drive.Files.delete(file_id=file['id'])
希望这可以帮助你!