首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tarfile不适用于.gz文件

tarfile不适用于.gz文件
EN

Stack Overflow用户
提问于 2017-07-03 04:29:08
回答 1查看 1.3K关注 0票数 0

我有一个嵌套的tarfile,格式是

代码语言:javascript
复制
tarfile.tar.gz
--tar1.gz
  --tar1.txt
--tar2.gz
--tar3.gz

我想用python写一个小脚本,将所有的tar1文件先解压缩到相同的文件夹顺序,即tar1.txt应该位于tarfile/tar1/

这是脚本,

代码语言:javascript
复制
#!/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)

但是当我运行脚本时,我得到了以下错误:

代码语言:javascript
复制
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文件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 04:40:15

.gz表示文件是gzipped压缩的;.tar.gz表示已经压缩的tar文件。tarfile可以很好地处理压缩的tar文件,但是它不能处理非tar归档文件(比如tar1.gz)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44874943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档