擅长:python、mysql、java
<p>几个问题:</p>
<p>1)您只返回一个文件</p>
<p>2)调用<code>.resolve</code>时只使用一个文件名,因此解析路径的位置取决于当前的工作目录。你知道吗</p>
<p>3)您的规范声明您只希望在目录树中下降一级,但不修剪<code>os.walk</code>正在采用的下降路径。你知道吗</p>
<p>我建议抛弃<code>os.walk</code>,充分利用<code>Path</code>。你知道吗</p>
<p>您声明只需要一个级别以下的文件;这意味着您需要使用<code>Path</code>遍历该级别:</p>
<pre><code>file_names=[]
for d in (p for p in Path(dirName).glob('*') if p.is_dir()):
ab_path=d.resolve()
file_names+=[fn for fn in Path(ab_path).iterdir() if fn.is_file() and fn.name.startswith(prefix)]
return file_names
</code></pre>
<p>还可以构造一个glob模式来进一步简化它。这可能很简单:</p>
<pre><code>Path(dirName).glob('*/prefix*')
</code></pre>
<p>或者</p>
<pre><code>[p.resolve() for p in Path(dirName).glob('*/prefix*') if p.is_file()]
</code></pre>
<p>找到一个目录下的文件与前缀你寻找。你知道吗</p>