擅长:python、mysql、java
<p>始终可以反转测试并使用<code>continue</code>跳过迭代:</p>
<pre><code>for fileinfo in response['Contents']:
if key not in fileinfo['Key']:
continue
if '/' not in fileinfo['Key']:
self._s3.download_file(bucket, fileinfo['Key'], file)
continue
filekeysplit = fileinfo['Key'].rsplit('/', 1)
if filekeysplit[1] == '':
continue
if not os.path.exists(file):
os.makedirs(file)
fileout = os.path.join(file, filekeysplit[1])
self._s3.download_file(bucket, fileinfo['Key'], fileout)
</code></pre>
<p>我们可以拉出双<code>download_file()</code>调用;跳过以<code>/</code><em>结尾的键。您只需要在循环之外创建一次<em>目录(我在这里也将<code>file</code>重命名为<code>directory</code>)。我在这里用<code>str.rpartition()</code>代替<code>str.rsplit()</code>:</p>
^{pr2}$