tar,gz压缩
tar gz文件的解压
tar gz文件的解压的改进(上一个会在本地多保存一个文件,改进的创建临时文件夹不会多保存)
原始代码:
import gzip
import os
import tarfile
import shutil
import tempfile
def un_gz(gzip_file_name):
# 解压gzip文件到临时目录,并返回解压后的文件名
with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
with gzip.GzipFile(gzip_file_name, 'rb') as g_file:
shutil.copyfileobj(g_file, tmp_file)
tmp_file_name = tmp_file.name
return tmp_file_name
def un_tar(tar_file_name, dest_path):
# 解压tar文件到指定目录
with tarfile.open(tar_file_name) as tar:
tar.extractall(path=dest_path)
# gzip压缩的tar文件名
gzip_tar_file = "/home/zee001-w/Downloads/interface/interfaces_x86_64.tar.gz"
# 解压gzip部分到临时文件
tmp_tar_file = un_gz(gzip_tar_file)
# 创建解压后的目标目录
dest_dir1 = os.path.splitext(gzip_tar_file)[0]
dest_dir = os.path.splitext(dest_dir1 )[0]
print(dest_dir)
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
# 解压tar部分到目标目录
un_tar(tmp_tar_file, dest_dir)
# 清理临时tar文件
os.remove(tmp_tar_file)