在 python 中的 tar 文件中,如何在 untar 期间返回一级目录
How to go one level back directory during untar the tar file in python
我正在尝试使用 import tarfile
提取 tar.gz 实际上问题是
在folder1.tar.gz里面有一个目录和一些文件
像 folder1.tar.gz->folder2->abc.txt,def.txt,folder3
import tarfile
tar=tarfile.open('folder1.tar.gz')
tar.extractall(targetdirectory)
它提取 abc.txt,def.txt,folder3 in folder2 in my targetdirectory
但我想要目标目录中的 abc.txt、def.txt、folder3 不想要文件夹 2,我想排除 folder2。
如果您知道存档结构,那么您可以使用 TarFile.getmembers() in conjunction with 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()
我正在尝试使用 import tarfile
提取 tar.gz 实际上问题是
在folder1.tar.gz里面有一个目录和一些文件
像 folder1.tar.gz->folder2->abc.txt,def.txt,folder3
import tarfile
tar=tarfile.open('folder1.tar.gz')
tar.extractall(targetdirectory)
它提取 abc.txt,def.txt,folder3 in folder2 in my targetdirectory 但我想要目标目录中的 abc.txt、def.txt、folder3 不想要文件夹 2,我想排除 folder2。
如果您知道存档结构,那么您可以使用 TarFile.getmembers() in conjunction with 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()