解压后如何保留压缩文件的名称?

时间:2021-04-27 15:50:02

标签: python zipfile

我有一个名为 model_A.zip 的 zip 文件,它是从 model_B.zip 重命名的。用于压缩 model_B.zip 的原始文件夹是 model_B。我使用 zipfile 来提取它。

import zipfile
with zipfile.ZipFile('model_A.zip', "r") as zip_ref:
    zip_ref.extractall(path_to_unzip)

解压后,文件夹名称变为model_B/。但是,我想要的是model_A/。我可以使用 shutil.move(model_B, model_A) 之类的函数,但问题是解压后我不知道文件夹名称(如果 model_A.zipmodel_C.zip 重命名,则文件夹名称为 model_C ).

有没有办法不用额外的操作就可以得到model_A

1 个答案:

答案 0 :(得分:1)

我从您的问题中了解到,您的 zip 文件中有一个顶级文件/目录。在提取之后或提取期间,您希望重命名该文件/目录。如果获取此顶级文件的名称是您的目标,那么下面的代码可能会有所帮助。提取完成后,您可以重命名此文件/目录。

import zipfile
import os

path_to_unzip ="D:\\Codes"
zip_file_loc = 'D:\\Codes\\Solo\\File_Sorter2.zip'
rename = "model"
with zipfile.ZipFile(zip_file_loc, "r") as zip_ref:
    topdir = zip_ref.namelist()[0]
    if(topdir[-1] == '/'):
        topdir = topdir[:-1]
    zip_ref.extractall(path_to_unzip)
sp = topdir.split('.')
if len(sp)>1:
    rename = "model" + "." + sp[len(sp) - 1]
oldname = os.path.join(path_to_unzip, topdir)
newname = os.path.join(path_to_unzip, rename)
print(newname)
try:
    os.rename(oldname, newname)
except:
    print("Check if file already exists")