擅长:python、mysql、java
<p>因为<code>tqdm</code>不知道<code>os.walk</code>的结果会有多长,因为它是一个生成器,所以不能对它调用<code>len</code>。您可以首先将<code>os.walk(target_dir)</code>转换为列表来解决此问题:</p>
<pre><code>for dirPath, subdirList, fileList in tqdm(list(os.walk(target_dir))):
</code></pre>
<p>从<code>tdqm</code>模块的文档中:</p>
<blockquote>
<p>len(iterable) is used if possible. As a last resort, only basic
progress statistics are displayed (no ETA, no progressbar).</p>
</blockquote>
<p>但是,<code>len(os.walk(target_dir))</code>是不可能的,因此没有ETA或进度条。</p>
<p>正如本杰明所指出的,使用<code>list</code>确实会占用一些内存,但不会占用太多内存。一个包含约190000个文件的假脱机目录导致Python在我的Windows 10计算机上使用了大约65MB的内存。</p>