Python - 从AWS S3下载当前日期的文件

时间:2018-05-01 19:02:16

标签: python-3.x amazon-s3 boto3

我目前正在使用以下python脚本将数据从AWS S3下载到我的本地。我遇到的唯一问题是当我运行它时,我必须手动输入需要下载文件的确切文件夹。我使用的S3存储桶每天创建一个新文件夹,我想只从当天的文件夹下载文件。我尝试使用系统日期创建一个变量,并尝试在存储桶列表变量中传递它,但脚本什么也没做,也没有抛出错误。任何人都可以帮助我。

import boto, os
import datetime
from os import path

current_date = datetime.datetime.now().strftime("%Y-%m-%d")


LOCAL_PATH = '/Users/user/Desktop/rep'

AWS_ACCESS_KEY_ID = 'ACCESS'
AWS_SECRET_ACCESS_KEY = 'SECRET'
bucket_name = 'bucket'

# connect to the bucket
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(bucket_name)


# go through the list of files
bucket_list = bucket.list(prefix='Nation/State/City/2018-05-01')
#bucket_list = bucket.list(prefix='Nation/State/City/current_date')

#bucket_list = bucket.list()
for l in bucket_list:
  keyString = str(l.key)
  d = LOCAL_PATH + keyString
  try:
    l.get_contents_to_filename(d)
  except OSError:
  # check if dir exists
    if not os.path.exists(d):
    os.makedirs(d)

谢谢..

1 个答案:

答案 0 :(得分:1)

您的Python代码对于您想要的内容是错误的。

错误在于:

bucket_list = bucket.list(prefix='Nation/State/City/current_date')

在此上下文中,current_data只是一个包含单词current_data的字符串。要修复它,您应该将上面的行更改为:

bucket_list = bucket.list(prefix='Nation/State/City/{}'.format(current_date))

此行将选择current_date变量的值并将其设置在您的前缀字符串中,替换{}

我还建议你查看这个链接: https://www.digitalocean.com/community/tutorials/how-to-use-string-formatters-in-python-3