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