IIU C вы можете отсортировать прочитанный список из test.txt
по расширению, используя os.path.splitext
:
import os
with open(f, 'r') as file:
sorted_files = sorted(file, key=lambda x: os.path.splitext(x)[1])
for line in sorted_files:
# rest of the code
Учитывая
l = ['/home/jenkins/workspace/a/Hello.java',
'/home/jenkins/workspace/b/Hello.cpp',
'/home/jenkins/workspace/b/Hello1.cpp']
Затем выполнение sorted(l, key=lambda x: os.path.splitext(x)[1])
возвращает :
['/home/jenkins/workspace/b/Hello.cpp',
'/home/jenkins/workspace/b/Hello1.cpp',
'/home/jenkins/workspace/a/Hello.java']
Объяснение:
os.path.splitext
возвращает кортеж (root, ext), например, os.path.splitext("dir/myfile.txt")
возвращает ("dir/myfile", ".txt")
, поэтому lambda x: os.path.splitext(x)[1]
возвращает вторую часть ( .txt
).
Затем он передается в качестве аргумента функции sorted
, поэтому список сортируется по алфавиту по расширению.