小白解压文件第二回,为什么要在写一次,相比第一次解压只是新增了解压到新建压缩文件名的文件内。
但是,当嵌套文件路径很长时候,(我的路径10个嵌套文件夹)解压到最后面的文件时,运行 zf.extractall(my_dir)报错找不到要解压的路径。
哭。
# -*- coding:utf-8 -*-
from unrar import rarfile
import os
import zipfile
path=r'C:\Users\Think\Desktop\湖'
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.zip':
f=os.path.join(root,file)
zf=zipfile.ZipFile(f,'r')
fname=os.path.splitext(file)[0]
my_dir=os.path.join(root,fname)
if not os.path.exists(my_dir):
os.makedirs(my_dir)
zf.extractall(my_dir)
print(file)
zf.close()
os.remove(f)
elif os.path.splitext(file)[1] == '.rar':
h=os.path.join(root, file)
rf = rarfile.RarFile(h,'r')
rfname=os.path.splitext(file)[0]
my_dir=os.path.join(root,rfname)
if not os.path.exists(my_dir):
os.makedirs(my_dir)
rf.extractall(my_dir)
print(file)
os.remove(h)
def isfile(path):
for root, dirs, files in os.walk(path):
for file in files:
if os.path.splitext(file)[1] == '.zip':
file_name(path)
isfile(path)
elif os.path.splitext(file)[1] == '.rar':
file_name(path)
isfile(path)
print('已全部解压')
isfile(path)