Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Boto3获取S3桶的内容_Python_Amazon S3_Boto3 - Fatal编程技术网

Python Boto3获取S3桶的内容

Python Boto3获取S3桶的内容,python,amazon-s3,boto3,Python,Amazon S3,Boto3,我正在尝试获取bucket子文件夹中的文件列表。一切正常,除了当我试图解析文件时,我注意到代码提取的第一个键是子文件夹名称。有没有办法将子文件夹名称作为键省略 s3 = session.resource('s3') bucket = s3.Bucket('bucket_name') for obj in bucket.objects.filter(Prefix="sub1"): key = obj.key print(key) 打印键的结果 sub1/ sub1/file1

我正在尝试获取bucket子文件夹中的文件列表。一切正常,除了当我试图解析文件时,我注意到代码提取的第一个键是子文件夹名称。有没有办法将子文件夹名称作为键省略

s3 = session.resource('s3')
bucket = s3.Bucket('bucket_name')

for obj in bucket.objects.filter(Prefix="sub1"):
    key = obj.key
    print(key)
打印键的结果

sub1/
sub1/file1
sub1/file2
.
.

我可以想象在django这样的集合中有一个
.exclude
,但我无法将其视为一个选项。你可以试试这样的

s3 = session.resource('s3')
bucket = s3.Bucket('bucket_name')
prefix = "sub1/"
data = [obj for obj in list(bucket.objects.filter(Prefix=prefix)) if obj.key != prefix]

for obj in data:
    print(obj.key)

重要提示:不要假设此值始终存在。它是在控制台或使用某些第三方工具(如s3fs)显式创建文件夹的产物。如果从API创建
my/example/object.txt
,但从未直接创建过“my”或“example”文件夹,则这些文件夹仍将显示在控制台中,但列表对象API不会返回
my/
my/example/