Python tarfile 不会解压

Posted

技术标签:

【中文标题】Python tarfile 不会解压【英文标题】:Python tarfile doesn't untar 【发布时间】:2014-11-26 18:00:00 【问题描述】:

我有以下文件:

# ls -lha
total 2.4M
drwxr-xr-x. 2 root     root     4.0K Nov 26 19:47 .
drwxrwxr-x. 5 bshuster bshuster 4.0K Nov 26 19:46 ..
-rw-r--r--. 1 root     root     2.4M Nov 26 19:26 logs.tar.bz2

解压文件

#  tar -xvjf logs.tar.bz2
/var/log/
/var/log/btmp
/var/log/messages

但是,在 Python 中通过 tarfile 模块执行此操作时,它并没有做太多。

# rm -rf var && python
Python 2.7.5 (default, Nov  3 2014, 14:26:24) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tarfile
>>> import os
>>> tar = tarfile.open("logs.tar.bz2")
>>> tar.extractall('.')
>>> os.listdir('.')
['logs.tar.bz2']
>>> tar.close()
>>> os.listdir('.')
['logs.tar.bz2']

我做错了什么?

最好的问候。

【问题讨论】:

Python tarfile 模块可能无法透明地处理bzip2 压缩的tar 文件。 【参考方案1】:

您需要指定正在使用bz2 压缩:

tar = tarfile.open("logs.tar.bz2", "r:bz2")

【讨论】:

以上是关于Python tarfile 不会解压的主要内容,如果未能解决你的问题,请参考以下文章

python解压文件

使用 Python 的 tarfile 创建 tarball 时保留文件权限

tarfile/zipfile/shutil

python zipfile & tarfile

Python_面向对象_zipfile和tarfile

解压zipfile & tarfile