对 TarInfo 列表进行排序

sort a list of TarInfo

我有一个 tar 文件,但他的成员顺序不正确。

import tarfile

tar = tarfile.open("test.tar")
tar_members = tar.getmembers()[1:]


for elem in tar_members:   
    print(elem)

tar.close()

如果我在 for 之前使用 tar_members.sort(),我会遇到错误:TypeError: '<' not supported between instances of 'TarInfo' and 'TarInfo'

我尝试了这个并且成功了:

import tarfile

tar = tarfile.open("test.tar")
tar_members = tar.getmembers()[1:]


tar_name = []

for elem in tar_members:
    tar_name.append(elem.name)

tar_name.sort()

tar_members = []
for name in tar_name:
    tar_members.append(tar.getmember(name))

for elem in tar_members:   
    print(elem)

tar.close()

我想知道是否有一种简单的方法可以对 getmembers() 的结果进行排序

您无法比较 TarInfo 个对象,但可以比较它们的名称:

tar_members = sorted(tar_members, key=lambda m: m.name)