python中的有序os.listdir()

python中的有序os.listdir(),python,file,Python,File,如何按顺序将文件添加到列表中 在我的目录中,我有以下文件:slide1.xml、slide2.xml、slide3.xml。。。slide13.xml os.listdir(path)不会按顺序返回列表 我试过这种方法 files_list = [x for x in sorted(os.listdir(path+"/slides/")) if os.path.isfile(path+"/slides/"+x)] 输出:['slide1.xml','slide10.xml','slide11.

如何按顺序将文件添加到列表中

在我的目录中,我有以下文件:
slide1.xml、slide2.xml、slide3.xml。。。slide13.xml

os.listdir(path)
不会按顺序返回列表

我试过这种方法

files_list = [x for x in sorted(os.listdir(path+"/slides/")) if os.path.isfile(path+"/slides/"+x)]

输出:
['slide1.xml','slide10.xml','slide11.xml','slide12.xml','slide13.xml','slide2.xml','slide3.xml','slide3\u COPY.xml','slide4.xml','slide5.xml','slide6.xml','slide7.xml','slide8.xml','slide9.xml']
您可能需要使用自己的排序功能

def custom_sort(x, y):
    pass
    #your custom sort

files_list = [x for x in sorted(os.listdir(path+"/slides/"), cmp=custom_sort) if os.path.isfile(path+"/slides/"+x)]

同时选中按键排序:

import re
files = ['slide1.xml', 'slide10.xml', 'slide11.xml', 'slide12.xml', 'slide13.xml', 'slide2.xml', 'slide3.xml', 'slide3_COPY.xml', 'slide4.xml', 'slide5.xml', 'slide6.xml', 'slide7.xml', 'slide8.xml', 'slide9.xml']
ordered_files = sorted(files, key=lambda x: (int(re.sub('\D','',x)),x))

给出
['slide1.xml','slide2.xml','slide3.xml','slide3\u COPY.xml','slide4.xml','slide5.xml','slide6.xml','slide7.xml','slide8.xml','slide9.xml','slide10.xml','slide11.xml','slide12.xml','slide13.xml']

我认为这是正确的,'slide10.xml'在'slide2.xml'之前。如果要将“slide2.xml”置于“slide10.xml”之前,则需要实现自定义排序\d如果文件名包含特殊字符,例如东方阿拉伯数字,则可能会出现问题。看到这个了吗