目录文件列表在输出中排序:(

时间:2013-05-11 08:23:59

标签: sorting python-2.7 xml-parsing directory

我在目录中有一个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

预期的Outptut

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

可以告诉我是否有解决此问题的方法。在此先感谢!!

1 个答案:

答案 0 :(得分: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)))