Как скопировать блоб в определенную папку в ведре? - PullRequest
0 голосов
/ 16 октября 2018

Мне нужно переместить некоторые файлы в облачном хранилище Google из одной папки в другую через Python.Просматривая их документы, я не могу найти ничего, чтобы переместить фактический файл, мне нужно было бы скопировать файл в другой каталог, а затем удалить исходный файл.

Мне удалось найти copy_blob , однако я не вижу там ничего, чтобы можно было указать папку.Есть ли способ указать папку, в которую я тоже хочу скопировать файл?Или есть другой способ переместить файл из одной папки в другую?

1 Ответ

0 голосов
/ 16 октября 2018

Облачное хранилище Google не имеет истинного смысла «папок».Если вы просто «перемещаете» файлы в одном и том же сегменте, то на самом деле вы просто меняете имя, которое отображается на большой двоичный объект в хранилище, и вы можете использовать для этого rename_blob.Например:

>>> from google.cloud import storage
>>> storage_client = storage.Client()
>>> bucket = storage_client.get_bucket('YOUR_BUCKET_NAME')
>>> blob = bucket.get_blob('/path/to/folder/foo.txt')
>>> blob.name
'/path/to/folder/foo.txt'
>>> bucket.rename_blob(blob, '/new/location/foo.txt')
>>> list(bucket.list_blobs())
[<Blob: YOUR_BUCKET_NAME, b'/new/location/foo.txt'>]

Если вы «перемещаете» файл между сегментами, вам нужно будет использовать copy_blob, потому что вам действительно нужно передавать данныемежду ведрами.При использовании этой функции параметром name будет полный путь к файлу, включая любые «папки».

...