擅长:python、mysql、java
<p>因此,@Karl Knechtel的回答让我想到了以下几点:</p>
<pre class="lang-py prettyprint-override"><code>import fnmatch
import os
EXCLUSIONS = [...] # Defined Files / Paths to exclude.
# A function to check each path / file
# against the EXCLUSIONS
def should_exclude(path) -> bool:
return any(fnmatch.fnmatch(path, exclude) for exclude in EXCLUSIONS)
# A function to filter out unwanted files.
def filter_path(source, rule) -> str:
# Just return wanted paths.
if not rule(source):
return source
# Now the function to walk through the
# given path.
def filtered_walk(path):
for root, dirs, files in os.walk(path):
# Now create real paths from dirs
for d in dirs:
tmp_dir = os.path.realpath(os.path.join(root, d))
if filter_path(tmp_dir, should_exclude):
yield tmp_dir
# To reach the files the same procedure.
for f in files:
...
# Same logic as above..
</code></pre>
<p>我仍然认为这仍然是没有效率的,尤其是对于更大的文件系统。可能是可以优化的</p>