<p>可以将<a href="https://docs.python.org/3/library/pathlib.html#pathlib.Path.glob" rel="nofollow noreferrer">pathlib.Path.glob()</a>与<a href="https://packaging.pypa.io/en/latest/version/#packaging.version.parse" rel="nofollow noreferrer">packaging.version.parse()</a>一起使用:</p>
<pre class="lang-py prettyprint-override"><code>from packaging import version
from pathlib import Path
def get_latest(folder):
selected_path = None
latest_version = version.parse('0')
for item in Path(folder).glob('*'):
if not item.is_dir():
continue
ver = version.parse(item.name)
if isinstance(ver, version.LegacyVersion):
continue # not PEP 440 compatible version
if ver > latest_version:
latest_version = ver
selected_path = str(item)
return selected_path
latest_path = get_latest(r'C:\intelFPGA')
</code></pre>
<h3>简短解释</h3>
<ul>
<li><code>glob('*')</code>遍历文件夹中的所有内容</li>
<li>需要<code>item.is_dir()</code>来过滤掉不是目录的所有内容</li>
<li>需要<code>isinstance(ver, version.LegacyVersion)</code>,因为那里可能有一个与模式不匹配的文件夹(文件夹名称包含除数字和点以外的其他字符)</li>
<li>版本比较需要<code>packaging.version</code>,因为<code>version.parse('1.12') > version.parse('1.5')</code>,但是<code>float('1.12') < float('1.5')</code>,并且<code>"1.2.3"</code>也是一个有效的版本名</李>
</ul>