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 2.7 列出文件夹中的s3文件仅列出第一个文件夹文件_Python 2.7_Amazon S3_Boto3 - Fatal编程技术网

Python 2.7 列出文件夹中的s3文件仅列出第一个文件夹文件

Python 2.7 列出文件夹中的s3文件仅列出第一个文件夹文件,python-2.7,amazon-s3,boto3,Python 2.7,Amazon S3,Boto3,我有一个S3 bucketbucket1,里面有一个文件夹test1。在test1文件夹folder1,folder2,folder3中有很多文件夹。每个folderx都包含一堆文件。我想列出所有文件夹中的所有文件。所以先列出folder1的文件,然后再列出folder2的文件,依此类推 s3_bucket --> test1 ---> folder1 --->file1

我有一个S3 bucket
bucket1
,里面有一个文件夹
test1
。在
test1
文件夹
folder1
folder2
folder3
中有很多文件夹。每个
folderx
都包含一堆文件。我想列出所有文件夹中的所有文件。所以先列出folder1的文件,然后再列出folder2的文件,依此类推

s3_bucket --> test1 
                   ---> folder1
                               --->file1
                               --->file2
                   ---> folder2
                               --->file1
                               --->file2
                   ---> folder3
                               --->file1
                               --->file2
然而,在我的代码中,它只列出folder1的文件。有人能验证一下我的密码吗

s3 = boto3.client('s3')
resp = s3.list_objects_v2(Bucket=s3_bucket, Prefix=s3_path)

for file in resp['Contents']:
     key = file['Key']
     print key
分页:不会在folder2上迭代。folder1有1000个文件

    s3 = boto3.client('s3')
    kwargs = {'Bucket': s3_bucket}

    while True:
        resp = s3.list_objects(Bucket=s3_bucket, Prefix=s3_path)
        try:
            contents = resp['Contents']
            print(len(contents))
        except KeyError:
            return
        for file in contents:
            key = file['Key']

        try:
            kwargs['ContinuationToken'] = resp['NextContinuationToken']
        except KeyError:
            break

感谢所有@dmulter@Michael@anand的建议和指导

这在s3路径是键的情况下起作用(在unix术语中,文件夹路径不包括bucket)


对我来说很好。请检查前缀是否正确not@anand你能把你在我的案例中使用的前缀发送给我吗?也许你得到的是一个分页的响应,而且还有更多的内容需要使用
ContinuationToken
?@Atihska如果你想在“test1”中找到所有内容,前缀是
test1/
。您可能还需要一个分页器。现在这变成了另一个关于分页的问题。请阅读和上的文件。这很简单。
s3 = boto3.resource('s3')
bucket = s3.Bucket(s3_bucket)

for obj in bucket.objects.filter(Prefix=s3_path):
    key = obj.key