当前位置:   article > 正文

利用python和boto3包从amazon s3 bucket中下载数据_amazon s3 bucket下载

amazon s3 bucket下载

前言

本文主要介绍利用python从amazon s3 bucket下载数据集

步骤

前提

在下载数据集之前,你得知道该数据的bucket,这个单词的意思是桶,水桶也是这个词,也就是说得知道你要得数据集放在哪个桶里面的:)
另外你还得知道两个key,一个是access key,另一个是secret access key。这两个具体是啥我也不清楚……反正是类似于密码

下面是一个例子

bucket = 'open-neurodata'
access_key = 'AKIA4XXGEV6ZQOTMTHX6'
secret_key = '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'
  • 1
  • 2
  • 3

与bucket建立连接

# pip install boto3
import boto3

# connect to client
client = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key)
print('connect to client successfully!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

查看bucket下某个object(“funke”)的数据 (一个bucket下可能会存在多个object)

# list data
print(client.list_objects(Bucket=bucket, Prefix="funke"))
  • 1
  • 2

下载该bucket下"funke"对象的目录结构文件

# download directory structure file - this shows exactly how the s3 data is stored
client.download_file(
    Bucket=bucket,
    Key="funke/structure.md",
    Filename="structure.md")
  • 1
  • 2
  • 3
  • 4
  • 5

效果:
在这里插入图片描述

核心

核心函数,对于该函数可以不用具体研究,只要知道输入就行了。提醒下载的数据会放在运行脚本的当前目录下

# function to download all files nested in a bucket path
def downloadDirectory(
    bucket_name,
    path,
    access_key,
    secret_key):
  
    resource = boto3.resource(
        's3',
        aws_access_key_id=access_key,
        aws_secret_access_key=secret_key)
    
    bucket = resource.Bucket(bucket_name)

    for obj in bucket.objects.filter(Prefix=path):
        if not os.path.exists(os.path.dirname(obj.key)):
            os.makedirs(os.path.dirname(obj.key))
        
        key = obj.key

        print(f'Downloading {key}')
        bucket.download_file(key, key)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

开始下载

# download
path = 'funke/fib25/testing/ground_truth' # 指定想要下载的文件夹
downloadDirectory(
            bucket,
            path,
            access_key,
            secret_key)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/707239
推荐阅读
相关标签
  

闽ICP备14008679号