Как я могу разделить zip-файл на несколько zip-файлов определенного размера c и извлечь его как один файл в облачное хранилище? - PullRequest
0 голосов
/ 09 июля 2020

Я использую эту функцию для извлечения zip-файла в корзину облачного хранилища.

def zipextract(self, zipfilename_with_path, subfile):
    """Unzip file into Cloud Storage."""
    bucket = self.storage_client.get_bucket(self.bucketname)
    bucket_dest = self.storage_client.get_bucket(self.project_id)

    blob = bucket.blob(zipfilename_with_path)
    if blob.exists():
        zipbytes = io.BytesIO(blob.download_as_string())

        if is_zipfile(zipbytes):
            with ZipFile(zipbytes, 'r') as myzip:
                for contentfilename in myzip.namelist():
                    contentfile = myzip.read(contentfilename)
                    blob = bucket_dest.blob(
                        subfile + "/" + contentfilename)
                    blob.upload_from_string(contentfile)

Как я могу разделить zip-файл (перед распаковкой) на несколько zip-файлов определенного размера c и извлечь его как один файл в облачном хранилище?

1 Ответ

1 голос
/ 09 июля 2020

Вы можете создать ZIP-архив, состоящий из нескольких частей, но вы не можете ни распаковать часть отдельно, ни разделить ее после создания архива (вы должны указать часть во время создания архива).

В вашем контексте , Я не понимаю значений, когда один и тот же zip состоит из нескольких частей, потому что вам нужно получить всю часть, чтобы иметь возможность правильно распаковать файл и проверить CR C.

Если вы вам нужно несколько частей, которые вы можете распаковать отдельно, вы должны разделить свой файл перед сжатием, сжать каждую часть отдельно, и тогда вы сможете распаковать отдельно с действительным CR C. Но опять же, я не улавливаю цель, потому что вы хотите объединить все части в конце.

...