我有一个嵌套的tarfile,格式是
tarfile.tar.gz
--tar1.gz
--tar1.txt
--tar2.gz
--tar3.gz我想用python写一个小脚本,将所有的tar1文件先解压缩到相同的文件夹顺序,即tar1.txt应该位于tarfile/tar1/
这是脚本,
#!/usr/bin/python
import os
import re
import tarfile
data = os.path.join(os.getcwd(), 'data')
dirs = [data]
while len(dirs):
dirpath = dirs.pop(0)
for subpath in os.listdir(dirpath):
if not re.search('(.tar)?.gz$', subpath):
continue
with tarfile.open(os.path.join(dirpath, subpath)) as tarf:
tarf.extractall(path=dirpath)
for subpath in os.listdir(dirpath):
newpath = os.path.join(dirpath, subpath)
if os.path.isdir(newpath):
dirs.append(newpath)
elif dirpath != data or os.path.islink(newpath):
os.remove(newpath)但是当我运行脚本时,我得到了以下错误:
Traceback (most recent call last):
File "./extract.py", line 16, in <module>
with tarfile.open(os.path.join(dirpath, subpath)) as tarf:
File "/usr/lib/python2.7/tarfile.py", line 1678, in open
raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully'.tar.gz‘文件可以很好地提取,但嵌套的'.gz’文件不能。这上面是什么?tarfile模块不能处理.gz文件吗?
发布于 2017-07-03 04:40:15
.gz表示文件是gzipped压缩的;.tar.gz表示已经压缩的tar文件。tarfile可以很好地处理压缩的tar文件,但是它不能处理非tar归档文件(比如tar1.gz)。
https://stackoverflow.com/questions/44874943
复制相似问题