我想根据目录名和文件名对路径进行排序。它们由第一个不同的文件夹("TENT1“和"TENT2")分隔。注意,有些文件位于"Job1“和"Job2”文件夹中,但有些文件也需要排序。谢谢!
paths = [
'/var/lib/conc/states/TENT1/Job1/metr-ok_2022_11_28',
'/var/lib/conc/states/TENT1/Job1/metr-ok_2022_11_29',
'/var/lib/conc/states/TENT1/Job1/weig-ok_2022_11_28',
'/var/lib/conc/states/TENT1/Job1/weig-ok_2022_11_29',
'/var/lib/conc/states/TENT1/down-ok_2022_11_27',
'/var/lib/conc/states/TENT1/down-ok_2022_11_28',
'/var/lib/conc/states/TENT1/serv-ok_2022_11_28',
'/var/lib/conc/states/TENT1/serv-ok_2022_11_29',
'/var/lib/conc/states/TENT2/Job2/metr-ok_2022_11_28',
'/var/lib/conc/states/TENT2/Job2/metr-ok_2022_11_29',
'/var/lib/conc/states/TENT2/Job2/weig-ok_2022_11_28',
'/var/lib/conc/states/TENT2/Job2/weig-ok_2022_11_29',
'/var/lib/conc/states/TENT2/down-ok_2022_11_27',
'/var/lib/conc/states/TENT2/down-ok_2022_11_28',
'/var/lib/conc/states/TENT2/serv-ok_2022_11_28',
'/var/lib/conc/states/TENT2/serv-ok_2022_11_29',
]但这正是我想要的:
paths = [
[
[
'/var/lib/conc/states/TENT1/Job1/metr-ok_2022_11_28',
'/var/lib/conc/states/TENT1/Job1/metr-ok_2022_11_29'
],
[
'/var/lib/conc/states/TENT1/Job1/weig-ok_2022_11_28',
'/var/lib/conc/states/TENT1/Job1/weig-ok_2022_11_29'
],
[
'/var/lib/conc/states/TENT1/down-ok_2022_11_27',
'/var/lib/conc/states/TENT1/down-ok_2022_11_28',
],
[
'/var/lib/conc/states/TENT1/serv-ok_2022_11_28',
'/var/lib/conc/states/TENT1/serv-ok_2022_11_29'
],
],
[
[
'/var/lib/conc/states/TENT2/Job2/metr-ok_2022_11_28',
'/var/lib/conc/states/TENT2/Job2/metr-ok_2022_11_29'
],
[
'/var/lib/conc/states/TENT2/Job2/weig-ok_2022_11_28',
'/var/lib/conc/states/TENT2/Job2/weig-ok_2022_11_29'
],
[
'/var/lib/conc/states/TENT2/down-ok_2022_11_27',
'/var/lib/conc/states/TENT2/down-ok_2022_11_28',
],
[
'/var/lib/conc/states/TENT2/serv-ok_2022_11_28',
'/var/lib/conc/states/TENT2/serv-ok_2022_11_29',
],
]
]这是我的密码:
from itertools import groupby
from os.path import dirname
sorted_by_file = [list(g) for _,g in groupby(paths, dirname)]我正在挣扎如何排序,一旦这些文件是按文件夹名称排序。
发布于 2022-11-29 19:42:57
与用于分组的dirname函数不同,您必须创建自己的函数,该函数如下所示
import os.path
def grouper(path):
d, f = os.path.split(path)
f = f.split('-')[0]
return d, f它返回一个包含目录和文件名相关部分的元组。
它可以与您在代码中已经使用的方式相同:
from itertools import groupby
sorted_by_file = [list(g) for _,g in groupby(paths, grouper)]https://stackoverflow.com/questions/74616163
复制相似问题