Google Cloud Storage - 将文件从一个文件夹移动到另一个文件夹 - 使用 Python
Posted
技术标签:
【中文标题】Google Cloud Storage - 将文件从一个文件夹移动到另一个文件夹 - 使用 Python【英文标题】:Google Cloud Storage - Move file from one folder to another - By using Python 【发布时间】:2020-02-11 00:58:37 【问题描述】:我想将文件列表从谷歌存储移动到另一个文件夹:
storage_client = storage.Client()
count = 0
# Retrieve all blobs with a prefix matching the file.
bucket=storage_client.get_bucket(BUCKET_NAME)
# List blobs iterate in folder
blobs=bucket.list_blobs(prefix=GS_FILES_PATH, delimiter='/') # Excluding folder inside bucket
for blob in blobs:
if fnmatch.fnmatch(blob.name, FILE_PREF):
WHAT CAN GO HERE?
count += 1
我在 Google 文档中找到的唯一有用信息是:
https://cloud.google.com/storage/docs/renaming-copying-moving-objects根据本文档,唯一的方法是从一个文件夹复制到另一个文件夹并删除它。
-
有什么方法可以实际移动文件?
根据 PREFIX 移动所有文件的最佳方法是什么,例如
*BLABLA*.csv
附:不想用
"gsutil mv gs://[SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME]
gs://[DESTINATION_BUCKET_NAME]/[DESTINATION_OBJECT_NAME]"
【问题讨论】:
它在移动部分的正下方声明它始终是复制和删除。没有其他方法可以将文件复制到目标路径,然后删除源文件。 【参考方案1】:这可能是一个可能的解决方案,因为 google.cloud.storage 中没有 move_blob 函数:
from google.cloud import storage
dest_bucket = storage_client.create_bucket(bucket_to)
source_bucket = storage_client.get_bucket(bucket_from)
blobs = source_bucket.list_blobs(prefix=GS_FILES_PATH, delimiter='/') #assuming this is tested
for blob in blobs:
if fnmatch.fnmatch(blob.name, FILE_PREF): #assuming this is tested
source_bucket.copy_blob(blob,dest_bucket,new_name = blob.name)
source_bucket.delete_blob(blob.name)
【讨论】:
【参考方案2】:你可以使用google.cloud.storage.Bucket
中的rename_blob
方法,这个函数移动文件并删除旧文件。 文件(blob)的名称必须不同
看看下面的代码:
from google.cloud import storage
dest_bucket = storage_client.create_bucket(bucket_to)
source_bucket = storage_client.get_bucket(bucket_from)
blobs = source_bucket.list_blobs(prefix=GS_FILES_PATH, delimiter='/') #assuming this is tested
for blob in blobs:
if fnmatch.fnmatch(blob.name, FILE_PREF): #assuming this is tested
source_bucket.rename_blob(blob,dest_bucket,new_name = blob.name)
【讨论】:
以上是关于Google Cloud Storage - 将文件从一个文件夹移动到另一个文件夹 - 使用 Python的主要内容,如果未能解决你的问题,请参考以下文章
ReferenceError:导入@google-cloud/storage 时分配的左侧无效
错误:模块“google.cloud.bigquery_storage”没有属性“BigQueryReadClient”
使用 Cloud Functions for Firebase 和 @google-cloud/storage 删除图像时出现问题