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

时间:2015-01-08 10:27:24

标签: python file sorting version

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

  

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,因为它似乎是一种有很多可能性的有趣语言,我很确定有一种更有效的方法。

干杯

1 个答案:

答案 0 :(得分:1)

正则表达式可以帮助您。

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+"