Python - 对递增的文件进行排序

Python - sorting incremented files

我有很多包含多个版本文件的文件夹。以下是示例文件:

Cat_Setup_v01.mb

Cat_Setup_v18.mb

版本号有两个字符填充。这样,我可以轻松地使用以下方式对文件进行排序:

 listFiles = glob.glob( myPath + "*.m*") # Retrieve files in my folder    
 listFiles.sort()    

不幸的是,我有一些文件有一百多个版本。因此,我的排序方法被 v1XX 破坏了,因为它们在 v09 和 v10 之间排序。

有没有一种有效的方法可以让我以正确的方式对文件进行排序,而不必重命名它们并更改它们的填充?

sorted(versionNumber, key=int) 结合一些拆分字符串操作可能是一个有趣的线索,但我担心它会太麻烦。

我不太了解Python,因为它似乎是一种有趣的语言,有很多可能性,我很确定有更有效的方法。

干杯

正则表达式可以帮到你。

import re

file=["Cat_Setup_v91.mb", "Cat_Setup_v01.mb", "Cat_Setup_v119.mb"]

print sorted(file, key=lambda x: int(re.findall("(?<=v)\d+", x)[0]))

给出输出:

['Cat_Setup_v01.mb', 'Cat_Setup_v91.mb', 'Cat_Setup_v119.mb']

已更新:根据@Rawing 评论

"(?<=v)\w*"更改为"(?<=v)\d+"