0

我有一个目录中的 xml 文件列表,例如:

file1.xml
file2.xml 
file3.xml
file4.xml
file5.xml
file10.xml
file11.xml
file12.xml
file22.xml
file23.xml
file24.xml
file31.xml
file32.xml
file33.xml

当我使用 os.listdir(path) 并打印文件名时,输出如下:

file1.xml
file10.xml 
file11.xml
file12.xml
file2.xml
file22.xml
file23.xml
file24.xml
file3.xml
file31.xml
file32.xml
file33.xml
file4.xml
file5.xml

预期输出

file1.xml
file2.xml 
file3.xml
file4.xml
file5.xml
file10.xml
file11.xml
file12.xml
file22.xml
file23.xml
file24.xml
file31.xml
file32.xml
file33.xml

任何人都可以告诉我是否有解决此问题的方法。提前致谢!!

4

1 回答 1

0

根据os.listdir的文档(强调我的):

os.listdir(路径)

返回一个列表,其中包含路径给定的目录中条目的名称。该列表是任意顺序的。它不包括特殊条目“。” 和 '..' 即使它们存在于目录中。

鉴于您的示例,也许最简单的方法是通过从名称中提取数字来对列表进行排序,然后按这些排序:

import os, re

filenames = os.listdir('/path/to/your/files')
filenames.sort(key=lambda L: map(int, re.findall('\d+', L)))
于 2013-05-11T09:25:27.707 回答