我目前正在使用以下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)
谢谢..
答案 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