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如果文件名包含特殊字符,例如东方阿拉伯数字,则可能会出现问题。看到这个了吗