0
tarfile.tar.gz
--tar1.gz
--tar1.txt
--tar2.gz
--tar3.gz
形式的嵌套tar文件,我想用Python写一个小脚本提取所有焦油广度优先的文件夹相同的顺序工作即tar1.txt应该位于tar文件/ 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文件吗?
IOW,处理'.tar.gz'只是一种方便。如果你想读gzip文件,你必须使用'gzip'模块。 –
对!谢谢,我需要阅读这个。 – abhipil