提取.gz文件中的.TAR文件

压力

我必须解压目录中的大约五十个* .gz文件。每个* .gz文件中都有一个* .TAR文件和其他一些文件。我正在尝试将* .gz文件的内容提取到目录的python脚本。但是,我无法将* .TAR中的* .TAR文件提取到同一目录中。这是脚本的外观:

import tarfile
import os
import glob
basedir = "path_to _dir"
for i in glob.glob(basedir +"*.gz"):
  a = os.path.basename(i)
  b = os.path.splitext(a)[0]
  c = os.path.splitext(b)[0]
  os.mkdir(os.path.join(basedir,c))
  t1 = tarfile.open(i)
  t1.extractall(c)
     for j in os.listdir(c):
       if j.endswith('.TAR'):
       print(j)
       t2 = tarfile.open(j)
       t2.extractall()
       t2.close() 
  t1.close()

它给了我错误:

 Traceback (most recent call last):
  File "./untar.py", line 16, in <module>
    t2 = tarfile.open(j)
  File "/usr/lib64/python2.7/tarfile.py", line 1660, in open
    return func(name, "r", fileobj, **kwargs)
  File "/usr/lib64/python2.7/tarfile.py", line 1722, in gzopen
    fileobj = bltn_open(name, mode + "b")
IOError: [Errno 2] No such file or directory: '0299_0108060501.TAR'

0299_0108060501.TAR是* .gz文件中包含的文件

在我看来,我从根本上做错了什么,但我不知道该怎么办。

orhtej2

由于tar.gz文件是使用gzip压缩的TAR存档,因此应使用

t1 = tarfile.open(i, 'r:gz')

根据文档

另外,您需要将内部文件的路径与要检查的目录结合起来,如下所示:

t2 = tarfile.open(os.path.join(c, j))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章