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+"
我有很多包含多个版本文件的文件夹。以下是示例文件:
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+"