如何在解压缩python中的tar文件时转到一个级别的目录

时间:2016-01-05 14:52:20

标签: python tar compression

我正在尝试使用import tarfile提取tar.gz实际问题是 在folder1.tar.gz中有一个dirctory和一些文件 like folder1.tar.gz-> folder2-> abc.txt,def.txt,folder3

import tarfile
tar=tarfile.open('folder1.tar.gz')
tar.extractall(targetdirectory)

它在我的targetdirectory中的folder2中提取abc.txt,def.txt,folder3 但我想在我的targetdirectory中的abc.txt,def.txt,folder3不想要文件夹2,我想要排除folder2。

1 个答案:

答案 0 :(得分:0)

如果您知道存档结构,则可以将TarFile.getmembers()TarFile.extractfile()结合使用,以获得所需内容。你可以做这样的事情

import tarfile
tar=tarfile.open('folder1.tar.gz')
for member in tar.getmembers():
  if member.name.startswith('folder2/') and member.isfile():
    inputfile = tar.extractfile(member)
    with open(os.path.join(targetdirectory, member.name.replace('folder2/', '')), 'wb') as outputfile:
      outputfile.write(inputfile.read())
    inputfile.close()