<p>这将是一个不完整的答案,因为我不知道python或boto,但我想评论一下这个问题的基本概念。</p>
<p>其他海报之一是对的:S3中没有目录的概念。只有平键/值对。许多应用程序假装某些分隔符表示目录条目。例如“/”或“\”。有些应用甚至把一个虚拟文件放在适当的位置,这样如果“目录”清空了,你仍然可以在列表结果中看到它。</p>
<p>你不必总是把整个桶都拉下来,在本地进行过滤。S3有一个分隔列表的概念,在这个列表中,您可以指定您认为的路径分隔符(“/”、“\”、“|”、“foobar”等),S3将向您返回虚拟结果,这与您想要的类似。</p>
<p><a href="http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html" rel="noreferrer">http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html</a>(
看看分隔符头。)</p>
<p>这个API将为您提供一级目录。如果你在你的例子中有:</p>
<pre><code>mybucket/files/pdf/abc.pdf
mybucket/files/pdf/abc2.pdf
mybucket/files/pdf/abc3.pdf
mybucket/files/pdf/abc4.pdf
mybucket/files/pdf/new/
mybucket/files/pdf/new/abc.pdf
mybucket/files/pdf/2011/
</code></pre>
<p>如果您传入一个带有前缀“”和分隔符“/”的列表,将得到以下结果:</p>
<pre><code>mybucket/files/
</code></pre>
<p>如果您传入一个前缀为“mybucket/files/”和分隔符“/”的列表,将得到以下结果:</p>
<pre><code>mybucket/files/pdf/
</code></pre>
<p>如果您传入一个前缀为“mybucket/files/pdf/”和分隔符“/”的列表,您将得到以下结果:</p>
<pre><code>mybucket/files/pdf/abc.pdf
mybucket/files/pdf/abc2.pdf
mybucket/files/pdf/abc3.pdf
mybucket/files/pdf/abc4.pdf
mybucket/files/pdf/new/
mybucket/files/pdf/2011/
</code></pre>
<p>如果您想从结果集中删除pdf文件本身,那么在这一点上您将是独立的。</p>
<p>现在你在python/boto中是怎么做到的,我不知道。希望有办法通过。</p>