Загрузить файлы в Google Cloud Storage Bucket из Google Cloud Datalab, используя Python API - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь загрузить файлы из моего экземпляра Datalab в самой записной книжке в мое хранилище Google Storage Bucket с помощью API Python, но не могу понять это. Пример кода , предоставленный Google в документации, похоже, не работает в Datalab. В настоящее время я использую команду gsutil, но хотел бы понять, как это сделать с помощью Python API.

Каталог файлов (я хочу загрузить файлы python, расположенные в папке контрольных точек):

!ls -R

.:
checkpoints  README.md  tpot_model.ipynb

./checkpoints:
pipeline_2020.02.29_00-22-17.py  pipeline_2020.02.29_06-33-25.py
pipeline_2020.02.29_00-58-04.py  pipeline_2020.02.29_07-13-35.py
pipeline_2020.02.29_02-00-52.py  pipeline_2020.02.29_08-45-23.py
pipeline_2020.02.29_02-31-57.py  pipeline_2020.02.29_09-16-41.py
pipeline_2020.02.29_03-02-51.py  pipeline_2020.02.29_11-13-00.py
pipeline_2020.02.29_05-01-17.py

Текущий код:

import google.datalab.storage as storage
from pathlib import Path

bucket = storage.Bucket('machine_learning_data_bucket')


for file in Path('').rglob('*.py'):
    # API CODE GOES HERE

Текущее рабочее решение:

!gsutil cp checkpoints/*.py gs://machine_learning_data_bucket

1 Ответ

1 голос
/ 01 марта 2020

Это код, который работал для меня:

from google.cloud import storage
from pathlib import Path

storage_client = storage.Client()
bucket = storage_client.bucket('bucket')

for file in Path('/home/jupyter/folder').rglob('*.py'):
    blob = bucket.blob(file.name)
    blob.upload_from_filename(str(file))
    print("File {} uploaded to {}.".format(file.name,bucket.name))

Выход:

File file1.py uploaded to bucket.
File file2.py uploaded to bucket.
File file3.py uploaded to bucket.

РЕДАКТИРОВАТЬ

Или вы можете использовать:

import google.datalab.storage as storage
from pathlib import Path

bucket = storage.Bucket('bucket')

for file in Path('/home/jupyter/folder').rglob('*.py'):
    blob = bucket.object(file.name)
    blob.write_stream(file.read_text(), 'text/plain')
    print("File {} uploaded to {}.".format(file.name,bucket.name))

Вывод:

File file1.py uploaded to bucket.
File file2.py uploaded to bucket.
File file3.py uploaded to bucket.
...