有没有办法使用 s3 打开 ROOT 文件?
ROOT 支持使用TS3WebFile读取(但不写入)
由于 uproots 支持 http,因此可以将 s3 资源转换为 http 签名 URL。可以用boto3完成:
import boto3
s3_client = boto3.client('s3', endpoint_url=my_endpoint)
url = s3_client.generate_presigned_url('get_object', Params={'Bucket': my_bucket, 'Key': my_key}, ExpiresIn=10000)
f = uproot.open(url)
有多种使用 boto 的身份验证方法,例如通过环境变量AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
。
无需任何特殊库即可完成相同的过程(感谢 Chris),只需实现 s3 提供的算法(https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html , http://awsdocs.s3.amazonaws.com/S3/latest/s3-qrc.pdf )
Uproot 没有,至少现在还没有。Uproot 具有 memmaped 文件(默认)、本地文件句柄、HTTP 和 XRootD 协议,并且可以添加任何具有 Python 接口和读取字节范围(而不是整个文件)的能力。
这是后端协议所在的目录。