python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录)
支持壓縮單個文件和多級文件夾
使用方法
zip_compress(to_zip,save_zip_name):#to_zip表示源文件或者源目錄,save_zip_name表示目的zip文件(可帶目錄)
思路:
先判斷目的文件目錄是否存在,如果不存在,就創建;
判斷被壓縮的是文件還是目錄
如果是文件,直接壓縮
如果是目錄,遍歷后逐一壓縮
#!/usr/bin/env?python3
#?-*-?coding:?utf-8?-*-
import?os,zipfile
def?zip_compress(to_zip,save_zip_name):#save_zip_name是帶目錄的,也可以不帶就是當前目錄
#1.先判斷輸出save_zip_name的上級是否存在(判斷絕對目錄),否則創建目錄
save_zip_dir=os.path.split(os.path.abspath(save_zip_name))[0]#save_zip_name的上級目錄
print(save_zip_dir)
if?not?os.path.exists(save_zip_dir):
os.makedirs(save_zip_dir)
print('創建新目錄%s'%save_zip_dir)
f?=?zipfile.ZipFile(os.path.abspath(save_zip_name),'w',zipfile.ZIP_DEFLATED)
#?2.判斷要被壓縮的to_zip是否目錄還是文件,是目錄就遍歷操作,是文件直接壓縮
if?not?os.path.isdir(os.path.abspath(to_zip)):#如果不是目錄,那就是文件
if?os.path.exists(os.path.abspath(to_zip)):#判斷文件是否存在
f.write(to_zip)
f.close()
print('%s壓縮為%s'?%?(to_zip,?save_zip_name))
else:
print?('%s文件不存在'%os.path.abspath(to_zip))
else:
if?os.path.exists(os.path.abspath(to_zip)):#判斷目錄是否存在,遍歷目錄
zipList?=?[]
for?dir,subdirs,files?in?os.walk(to_zip):#遍歷目錄,加入列表
for?fileItem?in?files:
zipList.append(os.path.join(dir,fileItem))
#?print('a',zipList[-1])
for?dirItem?in?subdirs:
zipList.append(os.path.join(dir,dirItem))
#?print('b',zipList[-1])
#讀取列表壓縮目錄和文件
for?i?in?zipList:
f.write(i,i.replace(to_zip,''))#replace是減少壓縮文件的一層目錄,即壓縮文件不包括to_zip這個目錄
#?print('%s壓縮到%s'%(i,save_zip_name))
f.close()
print('%s壓縮為%s'?%?(to_zip,?save_zip_name))
else:
print('%s文件夾不存在'?%?os.path.abspath(to_zip))
總結
以上是生活随笔為你收集整理的python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dpi重启后会恢复_Linux 系统的备
- 下一篇: python随机大小写字符串_pytho