from natsort import natsorted
filelist=[]
filelist=os.listdir("C:\\Users\\Amit\\Downloads\\Compressed\\trainigVid")
natsorted(filelist)
print filelist
我得到以下输出
['1.avi', '10.avi', '11.avi', '12.avi', '13.avi', '14.avi', '15.avi', '16.avi', '17.avi', '18.avi', '19.avi', '2.avi', '20.avi', '21.avi', '22.avi', '23.avi', '24.avi', '3.avi', '4.avi', '5.avi', '6.avi', '7.avi', '8.avi', '9.avi']
我希望这个列表自然地按照
排序[1.avi, 2.avi, 3.avi.....]
我被困住了,请帮忙
答案 0 :(得分:3)
natsorted
返回新排序的列表,它不会修改原始列表。这意味着你应该使用:
filelist = natsorted(filelist)
获得该返回值。
答案 1 :(得分:1)
试试这个:
import os
filelist = os.listdir("C:\\Users\\Amit\\Downloads\\Compressed\\trainigVid")
out = []
for s in sorted(filelist, key=lambda x:int(os.path.splitext(x)[0])):
out.append(s)
print out
<强>演示:强>
['1.avi', '2.avi', '3.avi', '4.avi', '5.avi', '6.avi', '7.avi', '8.avi', '9.avi', '10.avi', '11.avi', '12.avi', '13.avi', '14.avi', '15.avi', '16.avi', '17.avi', '18.avi', '19.avi', '20.avi', '21.avi', '22.avi', '23.avi', '24.avi']