Python實現文件的壓縮及解壓
當我們遇到大量小文件的傳輸時,一般會涉及到文件的壓縮和解壓,下面對zip的壓縮解壓直接上代碼
壓縮:
def zip_dir(dirname,zipfilename):
""" | ##@函數目的: 壓縮指定目錄為zip文件 | ##@參數說明:dirname為指定的目錄,zipfilename為壓縮后的zip文件路徑 | ##@返回值:無 | ##@函數邏輯: """
filelist = []
if os.path.isfile(dirname):
filelist.append(dirname)
else :
for root, dirs, files in os.walk(dirname):
for name in files:
filelist.append(os.path.join(root, name))zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED) for tar in filelist: arcname = tar[len(dirname):] #print arcname zf.write(tar,arcname) zf.close() </pre> 解壓縮:def unzip_file(zipfilename, unziptodir):
""" | ##@函數目的: 解壓zip文件到指定目錄 | ##@參數說明:zipfilename為zip文件路徑,unziptodir為解壓文件后的文件目錄 | ##@返回值:無 | ##@函數邏輯: """
if not os.path.exists(unziptodir):
os.mkdir(unziptodir, 0777)
zfobj = zipfile.ZipFile(zipfilename)
for name in zfobj.namelist():
name = name.replace('\','/')if name.endswith('/'): p = os.path.join(unziptodir, name[:-1]) if os.path.exists(p): # 如果文件夾存在,就刪除之:避免有新更新無法復制 shutil.rmtree(p) os.mkdir(p) else: ext_filename = os.path.join(unziptodir, name) ext_dir= os.path.dirname(ext_filename) if not os.path.exists(ext_dir): os.mkdir(ext_dir,0777) outfile = open(ext_filename, 'wb') outfile.write(zfobj.read(name)) outfile.close() </pre>
本文由用戶 ybw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!