python - 对 TarInfo 列表进行排序

标签 python python-3.x list sorting tarfile

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

import tarfile

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


for elem in tar_members:   
    print(elem)

tar.close()

如果我使用 tar_members.sort()在我的for之前我有错误: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)

关于python - 对 TarInfo 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911943/

相关文章:

python - Pandas 十进制数到日期的转换

python-3.x - Pandas 创建没有周末的日期范围

从列表列表中删除 NULL 元素

list - 练习多重组合,列表中的函数

python - pybind11 - 如果访问了结构的任何成员,则 boost::optional 结构的 std::vector 成员将被清空

python - 循环遍历列表以创建多个 excel 文件

python - 值错误 : Unable to configure filter 'require_debug_false' : Cannot resolve 'django.utils.log.CallbackFilter' : No module named CallbackFilter

python - 绘制非结构化三角形曲面 Python

python - 使用 QT 设计器创建的 PyQt5 程序从终端打开时不显示任何窗口

python - 从python中的列表中删除项目