gpt4 book ai didi

python - 在 .gz 文件中提取 .TAR 文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:03 25 4
gpt4 key购买 nike

我必须在一个目录中解压大约五十个 *.gz 文件。在每个 *.gz 文件中都有一个 *.TAR 文件和一些其他文件。我正在尝试将 *.gz 文件的内容提取到目录中的 python 脚本。但是,我无法在提取 *.gz 内容的同一目录中提取 *.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 文件中包含的文件

在我看来,我从根本上做错了一些事情,但我不知道是什么。

最佳答案

因为 tar.gz 文件是用 gzip 压缩的 TAR 文件,所以应该使用

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

根据 documentation .

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

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

关于python - 在 .gz 文件中提取 .TAR 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com