Google app engine 以编程方式模拟;gsutil mv";python中的appengine云存储
我想在谷歌云存储上实现一个mv(copyinthecloud)操作,该操作类似于gsutil的操作() 我之前在某个地方读到,这涉及到数据的读写(下载和重新加载),但我再也找不到这些段落了 这是在云存储中移动文件的正确方法,还是必须深入到boto库以避免通过网络复制数据以重命名文件Google app engine 以编程方式模拟;gsutil mv";python中的appengine云存储,google-app-engine,python-2.7,google-cloud-storage,Google App Engine,Python 2.7,Google Cloud Storage,我想在谷歌云存储上实现一个mv(copyinthecloud)操作,该操作类似于gsutil的操作() 我之前在某个地方读到,这涉及到数据的读写(下载和重新加载),但我再也找不到这些段落了 这是在云存储中移动文件的正确方法,还是必须深入到boto库以避免通过网络复制数据以重命名文件 istream = cloudstorage.open(src, mode='r') ostream = cloudstorage.open(dst, content_type=src_content, mode='
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()
更新:我发现RESTAPI支持复制和合成操作以及更多操作。似乎我们不必为了重命名某个东西而复制跨大陆的数据,这是有希望的
有用的链接,我已经找到了sofar
- 基于Boto的方法:
- GCS临床实验室:
- GCS库:
- 原始JSON API:
- 使用JSON API,有一个。下面是Python的官方示例,使用:
您应该能够使用GCS python客户端库从appengine在云中进行复制。不幸的是,我认为cloudstorage appengine库还不支持这一点,因此您必须使用JSON API建议可以在云中复制的底层接口目录(POST/b/sourceBucket/o/sourceObject/copyTo/b/destinationBucket/o/destinationObject),但我更喜欢更高级别的解决方案,如果有一个.With,您可以使用
client.objects().copy
谢谢您的提示,经过大量搜索,我找到了一些文档。。。这个界面看起来很吓人
# 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)