以编程方式在python中的app引擎云存储上模拟“gsutil mv”

时间:2013-09-09 11:39:43

标签: google-app-engine python-2.7 google-cloud-storage

我想在谷歌云存储上实施一个mv(云端复制)操作,类似于gsutil的工作方式(http://developers.google.com/storage/docs/gsutil/commands/mv)。

我之前在某处读过这涉及数据的读写(下载和重新上载),但我再也找不到这些段落了。

这是在云存储中移动文件的正确方法,还是必须降级到boto库以避免通过网络复制数据以重命名文件?

istream = cloudstorage.open(src, mode='r')
ostream = cloudstorage.open(dst, content_type=src_content, mode='w')

while True:
    buf = istream.read(500000)
    if not buf:
        break

    ostream.write(buf)

istream.close()
ostream.close()

更新:我发现其余的api支持复制和撰写操作等等。我们似乎希望我们不必在各大洲之间复制数据来重命名。

有用的链接我找到了沙发......

1 个答案:

答案 0 :(得分:3)

使用JSON API,有一个copy method。以下是使用Python Google Api Client lib

的Python的官方示例
# The destination object resource is entirely optional. If empty, we use
# the source object's metadata.
if reuse_metadata:
    destination_object_resource = {}
else:
    destination_object_resource = {
            'contentLanguage': 'en',
            'metadata': {'my-key': 'my-value'},
    }
req = client.objects().copy(
        sourceBucket=bucket_name,
        sourceObject=old_object,
        destinationBucket=bucket_name,
        destinationObject=new_object,
        body=destination_object_resource)
resp = req.execute()
print json.dumps(resp, indent=2)