擅长:python、mysql、java
<p><code>all</code>函数可用于根据文件名检查筛选器的元素:</p>
<pre><code>def matches(filter, filename):
return all(x in filename for x in filter)
</code></pre>
<p>要查找与给定筛选器匹配的文件,您需要遍历文件列表并对每个项应用<code>match</code>:</p>
<pre><code>def get_filename(filter, files):
for f in files:
if matches(filter, f)
return f
</code></pre>
<p>这可以使用<code>next</code>函数以更短的方式表示:</p>
<pre><code>def get_filename(filter, files):
return next((f for f in files if matches(filter, f)), None)
</code></pre>
<p>用第二个参数调用<code>next</code>会使它返回<code>None</code>,而不是在没有匹配文件时引发错误。你知道吗</p>
<p>现在你可以检查所有的文件了。我建议更进一步,使用字典标记过滤器:</p>
<pre><code>filters = {
'finance': ['employer','finance'],
'manifest': ['manifest'],
'address': ['epmloyer', 'adress', 'home'],
}
for label, filter in filters.items():
file = get_filename(filter, files)
if file:
print(f'Found {label} file: {file}')
</code></pre>
<p>您可以更进一步,为找到的文件创建字典:</p>
<pre><code>found_files = {label: get_filename(filter, files) for label, filter in filters.items()}
</code></pre>