Search code examples
pythonpython-3.xlistsortingtarfile

sort a list of TarInfo


i have a tar file but his members are not in the right order.

import tarfile

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


for elem in tar_members:   
    print(elem)

tar.close()

And if i use tar_members.sort() before my for i have the error : TypeError: '<' not supported between instances of 'TarInfo' and 'TarInfo'

I try this and it's work :

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()

I want to know if there is a simple way to sort the result of getmembers()


Solution

  • You can't compare TarInfo objects, but you can compare their names:

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