Python文件排序

2024-06-24 13:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

for root, dirs, files in 
os.walk(r'\\cusfs01\userprof$\khalha\Desktop\AllSalesForecasting'):
    for name in files:
        sorted(files, key=lambda)
        print(files)

我发现了许多用物理列表排序的例子,但是由于我的文件列表就在这个目录中,我不知道如何正确地排序。我有54个文件,它正在做的事情,9似乎是最新的文件,我希望54显示为最后一个。这似乎是一个重复的问题,但我不知道如何解决这个问题,其他类似的问题也没有解决这个问题。我的文件都是从0到54的编号。它们是csv文件,所以文件是0.csv,1.csv,…54.csv。当我打印这些文件,或尝试获取最后一个文件名时,它显示为9.csv。我想把它们列在数字上


Tags: 文件csvin列表for排序osroot
3条回答
>>> import os
>>> path = r'\\cusfs01\userprof$\khalha\Desktop\AllSalesForecasting'
>>> sorted(sum([files for _,_,files in os.walk(path)], []), key=lambda f: int(f.split('.')[0]))
['1.csv', '2.csv', '3.csv', '4.csv', '5.csv', '6.csv', '7.csv', '8.csv', '9.csv', '10.csv', '11.csv', '12.csv', '13.csv', '14.csv', '15.csv', '16.csv', '17.csv', '18.csv', '19.csv', '20.csv', '21.csv', '22.csv', '23.csv', '24.csv', '25.csv', '26.csv', '27.csv', '28.csv', '29.csv', '30.csv', '31.csv', '32.csv', '33.csv', '34.csv', '35.csv', '36.csv', '37.csv', '38.csv', '39.csv', '40.csv', '41.csv', '42.csv', '43.csv', '44.csv', '45.csv', '46.csv', '47.csv', '48.csv', '49.csv', '50.csv', '51.csv', '52.csv', '53.csv', '54.csv']
>>> 

sorted将按字母顺序对字符串排序,对整数和浮点进行数字排序。使用键为函数提供对给定文件的整数值进行排序的方法。像这样:

sorted(files, lambda n: int(n.split('.')[0]))

split去掉文件扩展名,int转换成整数。在

编辑:
只是让你知道。sorted返回已排序的列表。files.sort将就地排序。在

如果我理解你的问题,文件的排序顺序与你希望的顺序相反。在

您可能需要查看^{}的文档

我建议使用反向标志:

files = sorted(files, key=lambda, reverse=True)

相关问题 更多 >