GEE 批量删除 Assets 资产文件夹
批量删除 Google Earth Engine (GEE) 资产文件夹及其内容的脚本介绍 🗑️
在处理大规模遥感数据时,尤其是在 Google Earth Engine (GEE) 平台上进行数据分析和处理,管理海量的文件夹和资产成为一项关键任务。手动删除这些资产不仅耗时且容易出错。本文将介绍一个高效的 Python 脚本,用于批量删除 GEE 中指定的文件夹及其所有内容,包括递归删除子文件夹和文件,帮助您快速清理不需要的资产,优化存储和管理效率。
完整版地址
- 详细原文见:
https://mp.weixin.qq.com/s?__biz=Mzk0MTU1MjU5Mw==&mid=2247485088&idx=1&sn=fc2bd166d9e63613bef3ebec6bd283a1&chksm=c2d1e01ef5a669083618d141fdc51428d981044a7aabd9947c2dac0259ed2303c7efd308b4b2#rd
应用场景 🌐
在 GEE 平台中,若要删除资产文件夹,需要提前将子内容全部删除,而批量的清理总是麻烦的:
- 释放存储空间:清理旧的、无用的资产,优化存储资源。
- 自动化资产管理:通过编程方式批量管理大量文件夹结构,提升工作效率。
使用方法 🛠️
在使用此脚本前,请确保完成以下步骤:
1. 环境准备
-
安装必要的库:确保已安装
earthengine-api
。可以通过以下命令安装:pip install earthengine-api
-
配置网络代理(如有需要):如果您的网络环境需要代理,请设置相应的环境变量。
2. GEE 账户授权
-
首次使用时授权:运行
ee.Authenticate()
以完成 GEE 账户的授权认证。import ee ee.Authenticate()
3. 初始化 GEE API
-
初始化 API:使用您的 GEE 项目 ID 初始化 Earth Engine API。
ee.Initialize(project='your_project_id')
4. 指定删除路径
-
修改删除路径:在
main()
函数中,将folder_delete_path
修改为您需要删除的资产文件夹路径。folder_delete_path = 'users/xxxx/aim_folder'
5. 运行脚本
- 执行脚本:运行 Python 文件,脚本将递归删除指定文件夹中的所有文件及子文件夹,最终删除目标文件夹本身。
代码详情 🖥️
以下是用于批量删除 GEE 资产文件夹及其内容的完整 Python 脚本:
# -*- coding:utf-8 -*-
"""
此代码用于批量删除 Google Earth Engine (GEE) 资产存储中的指定文件夹及其所有内容。
递归删除指定文件夹中的所有资产(包括子文件夹和文件),并最终删除目标文件夹本身。"""import ee
import os
import time# 配置网络代理(如无代理,请注释以下两行)
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:xxxx'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:xxxx'# 解决 OpenSSL 3.0 兼容性问题
os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = '1'# 授权并初始化 Earth Engine API
ee.Authenticate()
ee.Initialize(project='ee-xxxx')def delete_asset_folder(delete_path):"""递归删除指定的资产文件夹及其所有内容。参数:delete_path (str): 要删除的文件夹路径,例如 'users/xxxx/aim_folder'"""try:print(f"正在处理删除路径: {delete_path}")# 获取该文件夹下的所有资产assets = ee.data.getList({'id': delete_path})for asset in assets:asset_id = asset['id']asset_type = asset['type']if asset_type == 'FOLDER':# 递归删除子文件夹delete_asset_folder(asset_id)else:# 删除文件资产ee.data.deleteAsset(asset_id)print(f"已删除资产: {asset_id}")# 为避免触发速率限制,添加短暂延时time.sleep(1)# 删除空文件夹ee.data.deleteAsset(delete_path)print(f"已删除文件夹: {delete_path}")except ee.EEException as e:if "not found" in str(e):print(f"资产 {delete_path} 不存在,无需删除。")else:print(f"删除资产 {delete_path} 时出错: {e}")raise # 重新抛出异常以便进一步处理或终止脚本def main():"""主函数,删除指定的 GEE 资产文件夹及其所有内容。"""# 要删除的文件夹路径(确保不以斜杠结尾)folder_delete_path = 'users/xxxx/aim_folder'# 调用删除函数delete_asset_folder(folder_delete_path)if __name__ == '__main__':main()
代码优势 ✨
- 自动化批量删除:能够递归删除文件夹及其所有内容,适合处理复杂的文件夹结构,显著提升效率。
- 稳定性强:通过捕获和处理异常,避免因个别错误导致整个删除流程中断,确保操作的连续性。
- 速率控制:在删除过程中加入短暂的延时,避免触发 GEE 的速率限制,保证脚本在长时间运行时的稳定性。
- 易于配置和修改:用户只需修改少量代码即可适应不同的使用场景,便于扩展和维护。
注意事项 ⚠️
- 删除操作不可逆:执行删除操作后,文件夹及其内容将无法恢复。请在使用前确认要删除的资产路径正确无误。
- 确保正确的网络代理配置:如果使用代理访问 GEE,请确保正确设置
HTTP_PROXY
和HTTPS_PROXY
,否则可能无法正常连接 GEE。 - OpenSSL 兼容性问题:如果遇到 OpenSSL 相关错误,请确保设置了
CRYPTOGRAPHY_OPENSSL_NO_LEGACY = '1'
以解决兼容性问题。 - 速率限制:Google Earth Engine 对 API 调用有速率限制。在删除大量资产时,保持适当的延时,以避免触发限制。
相关函数讲解 📚
函数名称 | 功能描述 | 参数说明 |
---|---|---|
ee.Authenticate() | 用户身份验证。执行该函数时,系统会提示用户通过浏览器登录 Google 账户,并授权使用 GEE API。 | 无 |
ee.Initialize(project='your_project_id') | 初始化 Google Earth Engine API。project 参数指定了用户的 GEE 项目 ID,确保后续 API 操作能够正确执行。 | project :GEE 项目 ID。 |
delete_asset_folder(delete_path) | 递归删除指定的资产文件夹及其所有内容,包括子文件夹和文件。 | delete_path :要删除的文件夹路径,例如 'users/nicexian0011/_DGS_GSV_Grids' 。 |
ee.data.getList({'id': delete_path}) | 获取指定文件夹路径下的所有资产列表,返回每个资产的 id 和 type ,用于区分是文件还是子文件夹。 | {'id': delete_path} :字典形式的请求参数,包含要获取的文件夹路径。 |
ee.data.deleteAsset(asset_id) | 删除指定的 GEE 资产(文件或文件夹)。在递归遍历到某个文件夹或文件时,调用此函数进行删除。 | asset_id :要删除的资产路径,例如 'users/nicexian0011/_DGS_GSV_Grids/subfolder' 。 |
time.sleep(1) | 在删除每个资产后添加短暂的延时(单位:秒),用于避免频繁调用 GEE API 导致的速率限制问题。 | 1 :延时的秒数。 |
结论 🎯
本文介绍了一个实用的 Python 脚本,用于批量删除 Google Earth Engine (GEE) 资产文件夹及其所有内容。该脚本通过递归删除和速率控制,实现了高效且稳定的批量删除任务,极大地简化了资产管理流程。用户在实际应用中应注意确认删除路径的准确性,以避免误删重要数据,同时遵守 GEE 的速率限制,确保脚本顺利执行。
希望本文对您在 GEE 数据管理和遥感数据处理工作中有所帮助!如果有任何问题或建议,欢迎在评论区交流讨论。😊
术语解释表 📖
术语 | 解释 |
---|---|
earthengine-api | Google 提供的 Python 库,用于与 GEE 进行交互。 |
ee.Authenticate() | Earth Engine API 的认证函数,用于验证用户身份。 |
ee.Initialize() | 初始化 Earth Engine API,准备进行数据操作。 |
ee.data.getList() | 获取指定文件夹路径下的所有资产列表。 |
ee.data.deleteAsset() | 删除指定的 GEE 资产(文件或文件夹)。 |
如果这对您有所帮助,希望点赞支持一下作者! 😊



详细全文-点击查看