Python列出较新版本的文件

时间:2017-01-04 01:54:04

标签: python

我需要打印最新版本的文件:

filenames = [
'jaks-dataformat-cbor-2.6.6.jar',
'sqljdbc42-4.2.jar',
'sqljdbc42-4.3.jar',
'spark-core_2.10-1.6.2.jar',
'spark-core_2.10-1.6.4.jar',
'commons-cli-1.2.jar',
]

在上面的列表中,我有两个 sqljdbc42-4.2.jar sqljdbc42-4.3.jar 。我只想打印4.3一个,同样的是spark-core只打印6.4一个。我尝试了一些模式但没有任何作用。任何帮助表示赞赏。

如果文件名起始相同且只有扩展名不同,这就是我能够获得的。

sorted_files = sorted(filenames, key=lambda x: int(x.split('.')[1]))
print sorted_files

1 个答案:

答案 0 :(得分:0)

我以为我会在他对自己的做法的评论中实施保罗·鲁尼的建议,

filenames = [
'jaks-dataformat-cbor-2.6.6.jar',
'sqljdbc42-4.2.jar',
'sqljdbc42-4.3.jar',
'spark-core_2.10-1.6.2.jar',
'spark-core_2.10-1.6.4.jar',
'commons-cli-1.2.jar',
]

from collections import OrderedDict

latest_versions = list(OrderedDict([fn.rsplit('-', 1) for fn in filenames]).items())

new_filenames = []

for fn in latest_versions:
    new_filenames.append(''.join(fn))

结果是:

print new_filenames
['jaks-dataformat-cbor2.6.6.jar', 'sqljdbc424.3.jar', 'spark-core_2.101.6.4.jar', 'commons-cli1.2.jar']

可能不是最好的解决方案,但希望它可以在此期间为您提供帮助。