Python:在提取过程中重命名 tar 文件中的成员

标签 python tarfile

前提

  • 我有一个目录/foo/bar
  • 我有一个包含目录 baz
  • 的 tar 文件

问题

将压缩包中baz的内容解压到/foo/bar

例子

存档包含:

baz/
 file1.txt

源目录包含:

foo/
  bar/
    file2.txt

提取后我希望它是:

foo/
  bar/
    file1.txt
    file2.txt

目前的解决方案

解压缩到一个临时目录,然后将 baz 的内容移动到目标位置,这是有效的,因为 baz 目录将始终具有相同的名称。

还有其他想法吗?

最佳答案

您可以使用 tarfile库的 extract()extractall()extractfile() 方法。您应该能够通过这种方式访问​​存档中的非顶级对象。

请注意,extractall() 中的 path 不是存档内的路径,而是您要将其解压缩到的路径,因此将 baz 放在那里将无济于事。

您可能会先调用 getmembers(),然后将列表缩减为您想要的内容,然后调用上述提取方法之一。

关于Python:在提取过程中重命名 tar 文件中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030284/

相关文章:

python - 解析python代码进行静态分析

python - 对 TarInfo 列表进行排序

python - 在 Python 中检查 tarfile 完整性

Python tarfile 模块在提取过程中覆盖现有文件 - 如何禁用它?

python - python中的逻辑运算符 "and"

python - 如何测试 windowFlags 中是否设置了 WindowStaysOnTopHint 标志?

python - Python 内存管理是如何工作的?

python - 从文本文件中提取数据列表

Python 错误 : Unexpected end of data while reading a . tar 文件

python - 使用 Python 从只有基本名称的 tarfile 中提取文件