擅长:python、mysql、java
<p><code>return</code>在第一次迭代中返回。您想要的是从所有迭代中获取路径。一种方法是将<code>return</code>更改为<code>yield</code>。现在<code>dirslist</code>变成了一个生成函数,并一个接一个地生成您的路径。你知道吗</p>
<pre><code>def dirslist():
for root, dirs, files in os.walk("c://", topdown=False):
for name in files:
yield(os.path.join(root, name))
for name in dirs:
yield(os.path.join(root, name))
print(list(dirslist()))
</code></pre>
<hr/>
<p>另一种方法是,如果您不是生成器人员,则将路径累积到一个列表中,然后返回该列表。你知道吗</p>
<pre><code>def dirslist():
paths = []
for root, dirs, files in os.walk("c://", topdown=False):
for name in files:
paths.append(os.path.join(root, name))
for name in dirs:
paths.append(os.path.join(root, name))
return paths
print(dirslist())
</code></pre>
<p>这里需要注意的是<code>return</code>只从函数返回一次,而<code>yield</code>在每次迭代时返回,每次调用前一次迭代后立即恢复。你知道吗</p>