我有一个名为 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.zip
从 model_C.zip
重命名,则文件夹名称为 model_C
).
有没有办法不用额外的操作就可以得到model_A
?
答案 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")