使用Python的tarfile模块解压缩一个tar.bz2文件

5
我有很多扩展名为"tar.bz2"的文件,我想解压它们。所以我使用了如下文档所述的"tarfile"模块:https://docs.python.org/3/library/tarfile.html
我尝试了以下代码:
import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
for i in tar:
  tar.extractall(i)
tar.close()

但是什么都没有发生:tar.bz2文件未被解压缩到“path_to/test/”文件夹中。
你有任何想法吗? 谢谢!
2个回答

18

你使用了错误的参数执行tar.extractall。我认为,你需要像这样做:

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
tar.extractall()
tar.close()
或者
import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
for i in tar:
  tar.extractfile(i)
tar.close()

如果您需要将文件提取到特定文件夹中

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
tar.extractall(some_path)
tar.close()

谢谢。但我尝试了你提供的两种解决方案,但结果相同:什么都没有发生。 - Julien

5
我喜欢上下文管理器:
import tarfile

def extract_bz2(filename, path="."):
    with tarfile.open(filename, "r:bz2") as tar:
        tar.extractall(path)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接