gpt4 book ai didi

python - 使用Python SDK时如何防止GCS自动解压对象?

转载 作者:行者123 更新时间:2023-12-05 03:41:27 26 4
gpt4 key购买 nike

我正在尝试在 GCS 中下载压缩的对象,但如果 GCS 没有自动为我解压缩文件,我将无法下载它。我希望能够自己下载gzip,然后在本地解压。

如果我在 GCS gui 中转到我的对象,我可以查看对象元数据并看到以下内容:

Content-Type: application/json
Content-Encoding: gzip
Cache-Control: no-transform

此外,如果我在控制台中右键单击 Authenticated URL 并单击 Save Link As,我会得到一个 gzip 存档,所以我知道这个文件实际上是一个存档。

我阅读了GCS's documentation您可以设置 Cache-Control: no-transform 然后“该对象在所有后续请求中用作压缩对象”。

除非我使用下面的代码下载 GCS 对象,否则它是作为 JSON 对象而不是 gzip 存档下载的:

bucket = storage_client.get_bucket("bucketname")
blob = bucket.blob("objectname")
stringobj = blob.download_as_text()
bytesobj = blob.download_as_bytes()
blob.download_to_filename("test.json.gz")

我尝试了三种不同的方法来下载对象,它们都将文件下载为 JSON 对象。

只是为了验证对象确实具有正确的 header ,我运行了以下命令:

blob.reload()
print(f"Content encoding: {blob.content_encoding}")
print(f"Content type: {blob.content_type}")
print(f"Cache control: {blob.cache_control}")

>> Content encoding: gzip
>> Content type: application/json
>> Cache control: no-transform

我不确定我还能尝试什么。

最佳答案

我重现了你的问题。我听从了您的输入并得到了类似的行为,因为我下载了一个文件名具有 .gz 扩展名的 gzip 存档。但是,gunzip -ing 文件会返回错误:

Example.json.gz: not in gzip format

解决方案是使用raw_download=True下载原始 gzip 存档以防止发生解压缩转码。

例子:

blob.download_to_filename("test.json.gz", raw_download=True)

关于python - 使用Python SDK时如何防止GCS自动解压对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67744979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com