擅长:python、mysql、java
<p><code>os.walk</code>不<strong>返回一个</strong>3元组,它<strong>生成多个</strong>3元组。来自<a href="https://docs.python.org/3/library/os.html#os.walk" rel="nofollow noreferrer">the docs</a>:</p>
<blockquote>
<p>For each directory in the tree rooted at directory <em>top</em> (including <em>top</em> itself), it yields a 3-tuple <code>(dirpath, dirnames, filenames)</code>.</p>
</blockquote>
<p>有关生成的工作原理,请参见<a href="https://stackoverflow.com/q/231767/4518341">What does the "yield" keyword do?</a>(可以忽略OP给出的示例代码)。技术上,<code>os.walk</code>返回生成3元组的生成器。在</p>
<p>外部<code>for</code>循环在3元组上迭代。你可能会被同一步骤中发生的解包弄糊涂了。所以说清楚</p>
<pre><code>for dirpath, dirnames, filenames in os.walk(top):
</code></pre>
<p>实际上与</p>
^{pr2}$