为什么我在列出S3文件夹中的文件时有一个额外的文件

时间:2017-12-17 19:12:37

标签: python amazon-s3 boto3

我试图从S3 Bucket" card-prtnr-npi"列出文件。我想要阅读的文件位于" ambs_ambivolatile"在S3" card-prtnr-npi"中存在的文件夹桶。这是实际路径" card-prtnr-npi / users / rtltest / ambs_ambivolatile"。 " ambs_ambivolatile"文件夹中只有一个文件但Boto 3正在读取一个不存在的附加文件。

'用户/ rtltest / ambs_ambivolatile /'文件夹中没有,只有part-m-00026.bz2'存在。请参阅以下代码。

[' users / rtltest / ambs_ambivolatile /',' users / rtltest / ambs_ambivolatile / part-m-00026.bz2']

    s3_src_bucket = 'card-prtnr-npi'
    s3_src_prefix = 'users/rtltest/ambs_ambivolatile/'
    print("getting response from source")
source_bucket = src_session.resource('s3').Bucket(s3_src_bucket)
files = source_bucket.objects.filter(Prefix=s3_src_prefix)
source_keys = []
for file in files:
    source_keys.append(file.key)

print(source_keys) 

以上print语句打印以下列表 [' users / rtltest / ambs_ambivolatile /',' users / rtltest / ambs_ambivolatile / part-m-00026.bz2']

如何停止阅读此额外文件' users / rtltest / ambs_ambivolatile /'。

1 个答案:

答案 0 :(得分:1)

它不是文件,而是您设置的前缀。 S3没有文件夹的概念。每个文件路径都是一个字符串,并为您的开头进行了过滤

尝试此操作以排除前缀

source_keys = [file.key for file in files if file.key!=s3_src_prefix]