对 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)
我有一个 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)