1、環境:
python 2.7
2、實現:
#!/usr/bin/env python
#coding:utf-8
import zipfile,os
#把整個文件夾內的文件打包成zip文件(包括壓縮路徑下的字文件夾的文件)
def compress(get_files_path, set_files_path):
f = zipfile.ZipFile(set_files_path , 'w', zipfile.ZIP_DEFLATED )
for dirpath, dirnames, filenames in os.walk( get_files_path ):
fpath = dirpath.replace(get_files_path,'') #注意2
fpath = fpath and fpath + os.sep or '' #注意2
for filename in filenames:
f.write(os.path.join(dirpath,filename), fpath+filename)
f.close()
print "compress operate success"
if __name__=='__main__':
get_files_path = "C:\\testzip1\\testzip2\\file" #需要壓縮的文件夾
set_files_path = "C:\\testzip1\\testzip2\\test.zip" #存放的壓縮文件地址(注意:不能與上述壓縮文件夾一樣)
compress(get_files_path, set_files_path)
3、結果:
將會在指定文件夾形成相應壓縮文件。(例如:上述將會在c盤的zip文件夾下形成test.zip文件)
4、注意:
- 壓縮路徑及存放路徑不能一樣,不然容易形成死循環。
- fpath = dirpath.replace(get_files_path,”) 和 fpath = fpath and fpath + os.sep or ” 這兩句代碼是爲了對地址進行轉換,不然會從最外層文件夾開始進行壓縮。(例如:如果缺少這兩句,上述代碼形成的test.zip文件解壓後是 test->testzip1->testzip2->file文件下所有的文件。如果加上這兩句,則爲test->file文件夾下所有的文件)