首页 > 解决方案 > 未排序的文件名集

问题描述

我正在使用os.walk生成器来填充一组文件名,以便以后使用以下命令进行操作:

file_path = '/home/user/Developer/10/'
list_of_files = {}
cnt = 0
for (dirpath, dirnames, filenames) in os.walk(file_path):
    for filename in filenames:
        if filename.endswith('.xml'):
            list_of_files[cnt] = os.sep.join( [dirpath, filename] )
            cnt += 1

排序list_of_files为:

{0: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183126.585.xml',
 1: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183216.572.xml',
 2: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183123.015.xml',
 3: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183058.016.xml',
 4: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183130.151.xml',
 5: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183140.873.xml',
 6: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183223.729.xml',
 7: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183054.451.xml',
 8: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183148.014.xml',
 9: '/home/user/Developer/10/2/test/channe 1_UTC_DEtoSE_183202.296.xml'}

我知道 python 在填充列表时不会对文件名进行排序,但我的印象是集合是自排序的?如果不是,我如何按文件名按字母数字顺序对这个集合进行排序?如果我使用sorted()if 返回一个带有设置元素编号的列表对象,这是非常没用的。

标签: python

解决方案


我不确定下面的片段是否会有所帮助;基本上,您按字典的值(不是键)排序。

for v in sorted(list_of_files.values()):
    print(v)

推荐阅读