我正在尝试使用python检查Sentinel-2的卫星图像产品在ESA服务器上是"在线"还是"离线"。我正在使用GNU Wget来实现这一点。
如文件所示(https://scihub.copernicus.eu/userguide/DataRestoration),您可以使用以下URI来查看某个UUID的产品是联机还是脱机:
https://scihub.copernicus.eu/dhus/odata/v1/Products('98ca202b-2155-4181-be88-4358b2cbaaa0')/Online/$value
括号之间的部分是UUID。当仅手动使用此链接时,它会按预期工作,并为在线产品返回true(1(,为离线产品返回false(0(。
我有以下代码:
import subprocess
def IsOnline(UUID):
wget_command = "wget --no-check-certificate --continue" + " --user={}".format(USERNAME) + " --password={}".format(PASSWORD)
URI = "https://scihub.copernicus.eu/dhus/odata/v1/Products('{0}')/Online/$value".format(UUID)
wget_cmd = wget_command + ' "' + URI + '"'
return subprocess.call(wget_cmd)
IsOnline(UUID)
应联机的UUID='586bafc4-fe2-4918-85e1-fe03090952ad'
应脱机的UUID='85fb6b2a-6559-4025-821f-b72573f3339c6'
不幸的是,所有事情,甚至在线UUID的返回都为False(0(。有人知道如何解决这个问题吗?
有人知道如何解决这个问题吗?
注意,subprocess.call
确实返回命令的返回代码,通常0
表示命令执行时没有错误。若这样,wget
应该创建文件,您应该能够检查该文件,以确定什么是API响应。请检查是否是这种情况,如果是,您可以使用-O
通知wget
下载的文件应该如何命名,例如:
wget -O example.html https://www.example.com
这应该让在python中阅读它变得容易。