보통 파이썬으로 통용되는 방법들이 안 되서 좀 헤맸다;;
하지만 웬만하면 로컬 환경에서 unzip 하고 올리십시오... 아래 코드 25G짜리 zip 파일 하나 푸는데 체감상 25분 걸림,,
그리고 반디집 같은 프로그램은 무료인데 GCP 노트북 인스턴스는 시간당 과금..ㅎ
from google.cloud import storage
from zipfile import ZipFile
from zipfile import is_zipfile
import io
def zipextract(bucketname, zipfilename_with_path):
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucketname)
destination_blob_pathname = zipfilename_with_path
blob = bucket.blob(destination_blob_pathname)
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.blob(zipfilename_with_path + "/" + contentfilename)
blob.upload_from_string(contentfile)
zipextract("mybucket", "path/file.zip") # if the file is gs://mybucket/path/file.zip
이렇게 하면 zip 파일을 GCP 버킷 내에서 풀 수 있다.
'개발 > Python' 카테고리의 다른 글
Github Actions을 이용한 ECS 배포 자동화 (1) | 2022.09.13 |
---|---|
GCP 주피터 노트북 인스턴스로 GCP 버킷의 mp4 비디오 읽기 (0) | 2021.09.05 |
파이썬으로 파일 부분 이름 한번에 바꾸기 (0) | 2021.09.05 |
파이썬 재귀함수로 문자열 거꾸로 출력하기 (0) | 2021.05.16 |
정규식을 사용하여 여러 패키지 버전 한 번에 지우기 (0) | 2021.05.08 |