以下是按字节从 GCS 下载文件(分块下载)的解决方法,包含代码示例:
from google.cloud import storage
import io
def download_blob(bucket_name, source_blob_name, destination_file_name):
# 初始化 GCS 客户端
client = storage.Client()
# 获取存储桶
bucket = client.get_bucket(bucket_name)
# 获取 GCS 对象
blob = bucket.blob(source_blob_name)
# 获取文件的大小
file_size = blob.size
# 设置下载的字节数
chunk_size = 262144
# 设置下载的起始字节和结束字节
start_byte = 0
end_byte = chunk_size - 1
# 打开目标文件
with io.FileIO(destination_file_name, 'wb') as file:
while start_byte < file_size:
# 下载 GCS 对象的一块字节
blob_chunk = blob.download_as_bytes(start=start_byte, end=end_byte)
# 写入目标文件
file.write(blob_chunk)
# 更新字节范围
start_byte = end_byte + 1
end_byte += chunk_size
if end_byte >= file_size:
end_byte = file_size - 1
bucket_name = 'your_bucket_name'
source_blob_name = 'your_source_blob_name'
destination_file_name = 'your_destination_file_name'
download_blob(bucket_name, source_blob_name, destination_file_name)
请确保将 your_bucket_name
替换为实际的存储桶名称,your_source_blob_name
替换为实际的 GCS 对象名称,your_destination_file_name
替换为实际的目标文件名。
这段代码将会按照指定的字节块大小(chunk_size
)从 GCS 下载文件,并将文件保存到本地。下载的过程会分多次进行,每次下载一个字节块。
上一篇:按子集查找最高值的分组
下一篇:按子节点的文本选择节点