Python 3.x googlecloudfunction-Python-将bucket中的文件解压缩到同一个bucket中

Python 3.x googlecloudfunction-Python-将bucket中的文件解压缩到同一个bucket中,python-3.x,google-cloud-platform,unzip,bucket,Python 3.x,Google Cloud Platform,Unzip,Bucket,我正在尝试通过Python(3.7)中的google cloud函数将已经在google存储桶中的文件解压缩到同一个存储桶中。解压必须在bucket中完成:无下载/上传 首先,有一个模块列出存储桶中的文件: rd_client = storage.Client() bu_rd_bucket = rd_client.get_bucket(current_bucket) blobs = bu_rd_bucket.list_blobs() for blob in blobs: 我尝试了两种方法: 1

我正在尝试通过Python(3.7)中的google cloud函数将已经在google存储桶中的文件解压缩到同一个存储桶中。解压必须在bucket中完成:无下载/上传

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

rd_client = storage.Client()
bu_rd_bucket = rd_client.get_bucket(current_bucket)
blobs = bu_rd_bucket.list_blobs()
for blob in blobs:
我尝试了两种方法:

1-使用zipfile库:

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:xxxxxxxxxxxxxxxxxxxx.zip不是zip文件

我在本地机器上尝试了这两个脚本,效果非常好

我在谷歌上找不到关于这个具体问题的太多相关信息

你知道吗

解压必须在bucket中完成:无下载/上传


你的要求是不可能的。云存储不提供解压对象所需的计算处理功能。

谢谢John,在您看来,是否可以将zip加载到google drive位置,在那里解压文件,并使用谷歌云功能将结果上传回bucket?花一分钟时间思考一下底层流程:要解压文件,您需要获取压缩后的数据,将其放入CPU,然后获取解压后的数据。谷歌硬盘或云存储将不会改变任何事情!您需要在本地获取数据以解压它们,然后将它们解压后写回。感谢guillaume,它确认了我们将无法在google云中处理zip文件。在我们的管道中,下载zip到本地驱动器不是一个选项。我想我们必须设计一个API来获取数据。