日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 解压zip文件_Python 解压缩文件详解

發(fā)布時(shí)間:2024/1/23 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 解压zip文件_Python 解压缩文件详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

zipfile模塊及相關(guān)方法介紹:

1 壓縮

1.1 創(chuàng)建zipfile對(duì)象

zipfile.ZipFile(file, mode='r', compression=0, allowZip64=True, compresslevel=None)

創(chuàng)建Zipfile對(duì)象,主要參數(shù):

1>file壓縮包名稱;

2>mode:讀'r'或者寫'w'模式;

3>compression:設(shè)置壓縮格式;

4>compresslevel:壓縮等級(jí);

壓縮格式分類:

格式

說明

對(duì)應(yīng)compresslevel

ZIP_STORED

不壓縮

無效

ZIP_DEFLATED

需要zlib支持

0~9

ZIP_BZIP2

需要bz2支持

0~9

ZIP_LZMA

需要lzma支持

無效

1.2 添加壓縮文件

zipobj.write(self, filename, arcname=None, compress_type=None, compresslevel=None)

參數(shù)說明:

1>fiename:添加文件路徑;

2>arcname:歸檔文件路徑與名稱;

1.3 添加壓縮數(shù)據(jù)

zipobj.writestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None)

參數(shù)說明:

1>zinfo_or_arcname:歸檔文件名稱;

2>data:壓縮數(shù)據(jù)str或者byte,如果數(shù)據(jù)為str,需要先進(jìn)行Utf-8編碼;

1.4 關(guān)閉

關(guān)閉壓縮文件:

zipobj.close()

1.5 一個(gè)例子:

壓縮目錄如下:

代碼實(shí)現(xiàn):

import zipfile

logdir = '/home/linux/logs'

zipname = '/home/linux/logs.zip'

#創(chuàng)建zip對(duì)象,

fzip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)

#遍歷要壓縮目錄

flist = os.listdir(logdir)

for name in flist:

fpath = os.path.join(logdir, name)

#寫入要壓縮文件

fzip.write(fpath)

#關(guān)閉

fzip.close()

進(jìn)入目錄解壓,文件路徑如下:

可以看到,我們將整個(gè)目錄添加到壓縮文件中,其實(shí)我們更想做的是logs/*.log;

對(duì)代碼進(jìn)行修改:

logdir = '/home/linux/logs'

zipname = '/home/linux/logs.zip'

import zipfile

#創(chuàng)建zip對(duì)象,

fzip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)

#遍歷要壓縮目錄

flist = os.listdir(logdir)

#獲取壓縮目錄名稱

basename = os.path.basename(logdir)

for name in flist:

fpath = os.path.join(logdir, name)

arcname = os.path.join(basename, name)

#寫入要壓縮文件,并添加歸檔文件名稱

fzip.write(fpath, arcname=arcname)

#關(guān)閉

fzip.close()

壓縮之后,解壓縮內(nèi)容:

這個(gè)才是我們想要的。

2.獲取壓縮包信息

打開壓縮包:

frzip = zipfile.ZipFile(zipname, 'r', zipfile.ZIP_DEFLATED):只讀方式打開;

frzip.printdir(),顯示壓縮包文件信息

File Name Modified Size

logs/1003.log 2019-04-09 10:00:10 17

logs/1001.log 2019-04-09 10:00:06 17

logs/1004.log 2019-04-09 10:00:12 17

logs/1002.log 2019-04-09 10:00:08 17

logs/1000.log 2019-04-09 10:00:04 17

frzip.filelist:記錄壓縮包文件信息,與printdir類似,內(nèi)容如下:

[,

,

,

,

]

frzip.getinfo(name):獲取指定arcname的信息:

frzip.getinfo('logs/1003.log')

#輸出結(jié)果:

frzip.namelist():獲取壓縮文件列表

['logs/1003.log',

'logs/1001.log',

'logs/1004.log',

'logs/1002.log',

'logs/1000.log']

3 解壓壓縮包

frzip.extract(member, path=None, pwd=None):解壓縮一個(gè)文件到指定目錄;

參數(shù):

member:壓縮包中文件;

path:解壓縮到指定目錄,默認(rèn)解壓到當(dāng)前目錄;

frzip.extractall(path=None, members=None, pwd=None):解壓縮多個(gè)文件到指定目錄;

參數(shù):

path:指定的解壓目錄;

members:指定解壓文件,默認(rèn)解壓全部;

解壓指定文件到指定目錄:

#可以自己定義路徑

zipname = '/home/linux/logs.zip'

extractpath = '/home/linux/1'

#注意壓縮格式選擇

frzip = zipfile.ZipFile(zipname, 'r', zipfile.ZIP_DEFLATED)

extractfile = frzip.namelist()

if len(extractfile):

extname = extractfile[0]

print('extract file:', extname)

frzip.extract(extractfile[0], extractpath)

frzip.close()

輸出結(jié)果:extract file: logs/1003.log,在extractpath目錄下有l(wèi)og文件;

使用frzip.extractall將所有文件解壓到指定目錄:

#可以自己定義路徑

zipname = '/home/linux/logs.zip'

extractpath = '/home/linux/1'

#注意壓縮格式選擇

frzip = zipfile.ZipFile(zipname, 'r', zipfile.ZIP_DEFLATED)

#將所有文件加壓縮到指定目錄

frzip.extractall(extractpath)

frzip.close()

除了zipfile還有其它模塊:

import gzip;

import tarfile;

這些模塊使用方式都類似,后面文章中我們?cè)谠斀庵v解。

總結(jié)

以上是生活随笔為你收集整理的python 解压zip文件_Python 解压缩文件详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。