我想获取私有S3中存在的文件列表。通常,我会执行以下操作:
from boto.s3.connection import S3Connection
from boto.s3.key import Key
aws_access_key_id = "XXX"
aws_secret_access_key = "YYY"
conn = S3Connection(aws_access_key_id, aws_secret_access_key)
bucket = conn.get_bucket('bucket-name')
these_files = ["s3://bucket-name/" +
f.name for f in list(bucket.list("", ""))]
但是,如果我要以大熊猫格式读取文件,则会得到403 Forbidden Error
。我找到了here解决方案来获取文件,例如:
bucket = conn.get_bucket('bucket', validate=False)
k = bucket.get_key('file.csv')
df = pd.read_csv(k)
此解决方案的问题在于,它要求用户事先知道文件名。我可以通过创建自定义函数来避免这种情况:
def readS3_files(f):
filename = f.split("/")[-1]
k = bucket.get_key(filename)
df = pd.read_csv(k)
return df
Boto中是否有东西可以让我从私有S3存储桶中获取文件名,因此我可以简单地在熊猫中读取文件名而无需创建此自定义函数?