在python中使用lambda对目录中的文件进行递归排序

2024-06-16 18:07:40 发布

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

我有像/test/abd.txt、test/ghk.txt、test/zgh.txt、test/bhg.txt这样的文件 我使用lambda进行排序,但由于读取路径,排序无法工作。如何仅按文件名排序,尝试了几种方法但不起作用:

path = '/test'
files = glob.glob(os.path.join(path, '*.txt'))
#print(os.path.basename(files))
#print(Path('path').name)
#sorted_files = sorted(files, key=lambda tup: tup.split('.')[1].lower())
#print(sorted_files)

输出应为abd.txt、bhg.txt、ghk.txt、zgh.txt


Tags: pathlambdatesttxt排序osfilesglob
2条回答

如果您只是希望文件名本身不带path

sorted_files = sorted(os.path.basename(f) for f in files)

如果希望仅按文件名排序,而不按扩展名排序:

sorted_files = sorted([os.path.basename(f) for f in files], key=lambda x: os.path.splitext(x)[0])

尽管如此,对于相同的path和扩展,我不理解这样做的必要性。排序本身应该可以工作:sorted(files)

sorted_files = sorted(files, key= lambda temp: temp[0:-4].lower())

相关问题 更多 >