擅长:python、mysql、java
<p>您可以简化您的<code>extractRecursive</code>方法,以使用它应该使用的<code>os.walk</code>。<code>os.walk</code>已读取所有子目录,因此不需要递归。</p>
<p>只需删除递归调用,它就可以工作了:)</p>
<pre><code>def extractRecursive(path, archives, extracted_archives=None):
i = 0
if not extracted_archives:
extracted_archives = set()
for dirpath, dirnames, filenames in os.walk(path):
for f in filenames:
fp = os.path.join(dirpath, f)
i += 1
print i
file_type = m.file(fp).split(',')[0]
if file_type in archives and fp not in extracted_archives:
extracted_archives.add(fp)
extracted_in.add(dirpath)
arcExtract(fp, file_type, path, True)
for path in extracted_in:
extractRecursive(path, archives, extracted_archives)
return "Done"
</code></pre>