我有一个目录
C:\Chrome\
|-31.0.1649.39
|-31.0.1650.38
|-31.0.1650.39
|-31.0.1651.37
|-31.1.1650.38
|-32.0.1700.4
|-33.0.1750.154
|-34.0.1847.137
鉴于基本版本,我愿意
newest = glob.glob(r"C:\Program Files\Chrome\{0}.*.*.*\chrome.exe".format(base_version))[-1]
有谁知道更好的方法吗?我对通配符犹豫不决,我尝试仅匹配数字 [0-9] 但我无法开始工作,并认为这是否有效并且目录将始终在此约定中命名,而没有其他目录存在。我应该使用re
吗?另一个问题是 glob 是否总是返回一个有序列表,其中最高版本是最后一个元素。这在另一个系统上会有所不同吗?
最佳答案
您需要将版本号转换为整数列表才能正确排序。您可以枚举通配结果并构建包含 (version_list, file_path) 的 2 元组的第二个列表,然后对其进行排序:
chromedirs = []
# list chrome directories
for chromedir in glob.glob(r"C:\Program Files\Chrome\{0}.*.*.*".format(base_version):
try:
# decimalized version list for sorting
chrome_ver = [int(d) for d in os.path.basename(chromedir).split('.')]
chromedirs.append((chrome_ver, chromedir))
except ValueError:
continue
if chromedirs:
# sort the result and grab the last
chrome = os.path.join(chromedirs.sort()[-1][1], 'chrome.exe')
print chrome
关于python - 使用 glob,匹配目录模式并根据顺序返回最高的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085822/