Google 云函数 - Python - 将存储桶中的文件解压缩到同一个存储桶

Google cloud function - Python - unzip a file that is in a bucket to the same bucket

我正在尝试通过 Python (3.7) 中的 google 云函数将已经在 google 存储桶中的文件解压缩到同一个桶。解压缩必须在存储桶中完成:否 download/upload.

首先有一个模块可以列出存储桶中的文件:

rd_client = storage.Client()
bu_rd_bucket = rd_client.get_bucket(current_bucket)
blobs = bu_rd_bucket.list_blobs()
for blob in blobs:

我尝试了两种方法:

1- 使用压缩文件库:

if len(re.findall('xxxxx(.*).zip', str(blob.name)))>0:
      with zipfile.ZipFile('gcs://{}/{}'.format(current_bucket, blob.name), 'r') as zip_ref:
          zip_ref.extractall('gcs://' + current_bucket)***

使用此脚本我收到一条错误消息:FileNotFoundError:[Errno 2] 没有这样的文件或目录:'gcs://xxxxxxxxxxxxxxx.zip'(我使用绝对或相对文件路径得到相同的结果)

2- 使用 shutil 库:

if len(re.findall('xxxxx(.*).zip', str(blob.name)))>0:
     shutil.unpack_archive(blob.name, current_bucket)

使用此脚本我收到一条错误消息:shutil.ReadError:xxxxxxxxxxxxxxxxxxxxxxx.zip 不是 zip 文件

我已经在我的本地机器上尝试了这两个脚本并且运行良好。

我没有发现与 google 有关这个具体问题的太多相关信息。

有什么想法吗?

the unzip has to be done in the bucket : no download/upload.

你的要求是不可能的。 Cloud Storage 不提供解压缩对象所需的计算处理功能。