使用Python的sentinelsat API下载Sentinel数据出现TqdmKeyError如何解决?
报错原因
TqdmKeyError: "Unknown argument(s): {'delay': 2}"由sentinelsat与tqdm依赖包版本不兼容导致:
- 1.1.0及以上版本的sentinelsat在实现下载进度条逻辑时,会给tqdm传入
delay参数控制进度条延迟显示规则 - 本地安装的tqdm版本低于4.62.0时,该版本尚未支持
delay参数,因此会抛出未知参数的报错
解决方法
任选以下一种方案即可解决问题:
方案1:升级tqdm到兼容版本
在终端执行对应命令升级tqdm:
pip环境执行:
pip install --upgrade tqdm>=4.62.0
conda环境执行:
conda install -c conda-forge tqdm>=4.62.0
升级完成后直接运行原有代码即可,无需修改代码逻辑。
方案2:禁用下载进度条
如果不想升级依赖包,可在调用download_all方法时传入show_progress=False参数关闭进度条功能,即可跳过tqdm的参数调用,修改代码对应行如下:
api.download_all(products, folder, show_progress=False)
额外提示:现有代码的日期处理逻辑存在问题,
api.query的date参数不需要手动拼接为YYYYMMDD格式,直接传入原始的initialDate和finalDate字符串即可,否则可能导致查询范围异常,优化后的查询代码参考:products = api.query(footprint, platformname = "sentinel-3", producttype = "SL_2_LST___", date = (initialDate, finalDate) )
内容的提问来源于stack exchange,提问作者corp_guy
相关产品推荐
相关产品推荐

