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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

python

python zipfile_python zipfile - 刘江的python教程

發(fā)布時(shí)間:2024/10/12 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python zipfile_python zipfile - 刘江的python教程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

zipfile

閱讀:?12164

評(píng)論:0

ZIP是通用的歸檔和壓縮格式。zipfile模塊提供了通用的創(chuàng)建、讀取、寫入、附加和顯示壓縮文件的方法,你可以簡(jiǎn)單地把它理解為Python中的zip解壓縮軟件。該模塊可以解密帶有密碼的壓縮文件,但不提供附加密碼的壓縮功能。

定義的類和異常

class zipfile.ZipFile

模塊最重要的類。用于讀寫ZIP文件。

class zipfile.PyZipFile

創(chuàng)建包含Python庫(kù)的ZIP歸檔文件的類

class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0))

用于顯示ZIP文件信息的類。ZIP對(duì)象的getinfo()或infolist()方法會(huì)返回一個(gè)該類的實(shí)例。filename是ZIP文件的完整名稱。date_time是一個(gè)包含6個(gè)元素的元組,描述文件最近修改時(shí)間。

zipfile.is_zipfile(filename)

如果文件是個(gè)ZIP文件則返回True,否則False。

zipfile.ZIP_STORED

未壓縮的歸檔文件的數(shù)字常數(shù)。

zipfile.ZIP_DEFLATED

常用的ZIP壓縮方法。

zipfile.ZIP_BZIP2

BZIP2壓縮方法的數(shù)字常量。

zipfile.ZIP_LZMA

LZMA壓縮方法的數(shù)字常量。

exception zipfile.BadZipFile

ZIP文件被損壞異常。3.2版本新增。

exception zipfile.LargeZipFile

當(dāng)需要ZIP64功能,但未開啟該功能時(shí)彈出異常。

ZipFile對(duì)象

class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True)

打開一個(gè)ZIP文件。返回的也是一個(gè)類似文件的ZipFile對(duì)象,可以讀寫。

file可以是一個(gè)文件地址字符串、文件類對(duì)象或地址類對(duì)象。mode參數(shù)為r時(shí),表示讀取一個(gè)已經(jīng)存在的文件;為w的時(shí)候表示覆蓋或?qū)懭胍粋€(gè)新文件;為a時(shí)表示在已有文件后追加;為x時(shí)表示新建文件并寫入。x模式下,如果文件名已經(jīng)存在,則拋出FileExistsError異常。這些特點(diǎn)和open()方法打開文件一樣樣的。

compression指明壓縮格式,支持ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2和ZIP_LZMA。使用不支持的格式會(huì)拋出NotImplementedError異常。默認(rèn)是ZIP_STORED格式。如果指定為ZIP_DEFLATED, ZIP_BZIP2或者ZIP_LZMA格式,但對(duì)應(yīng)的支持模塊zlib, bz2或者lzma不可用,則拋出RuntimeError異常。

當(dāng)文件大小超過(guò)4GB時(shí),將使用ZIP64擴(kuò)展(默認(rèn)啟用)。

在w/x/a模式下,如果沒(méi)有寫入任何數(shù)據(jù)就close了,則會(huì)生成空的ZIP文件。

ZipFile也是一種上下文管理器(3.2版本新特性),同樣支持with語(yǔ)句,如下例子所示:

with ZipFile('spam.zip', 'w') as myzip:

myzip.write('eggs.txt')

ZipFile.write(filename, arcname=None, compress_type=None)

往ZIP文件里添加新文件,單個(gè)文件可以重復(fù)添加,但是會(huì)彈出警告。如果指定arcname參數(shù),則在ZIP文件內(nèi)部將原來(lái)的filename改成arcname。例如z.write("test/111.txt", "test22/111.txt")

import zipfile

import os

z = zipfile.ZipFile("test.zip", "w")

z.write(r"d:\test\1.txt") # 注意路徑的寫法

z.write(r"d:\test\2.txt")

z.write(r"d:\\test\test.txt")

z.write(r"d:\\test\test.py")

z.close()

print(os.getcwd())

ZipFile.close()

確保壓縮文件被正確關(guān)閉。

ZipFile.getinfo(name)

返回一個(gè)被壓縮成員的ZipInfo對(duì)象。如果ZIP文件中沒(méi)有該名字,將拋出異常。

ZipFile.infolist()

返回一個(gè)包含ZIP文件內(nèi)所有成員信息的ZipInfo對(duì)象。

ZipFile.namelist()

返回ZIP文件內(nèi)所有成員名字列表。

ZipFile.open(name, mode='r', pwd=None, *, force_zip64=False)

訪問(wèn)檔案中的指定文件。pwd是解壓密碼。該方法也是個(gè)上下文管理器,支持with語(yǔ)法。

with ZipFile('spam.zip') as myzip:

with myzip.open('eggs.txt') as myfile:

print(myfile.read())

r模式為只讀模式,提供read(), readline(), readlines(), __iter__(), __next__()等方法.

w模式為寫入模式,支持write()方法。此時(shí)對(duì)ZIP文件內(nèi)其它成員的讀寫將拋出ValueError異常。

>>> import zipfile

>>> z = zipfile.ZipFile(r"d:\test.zip")

>>> z.namelist()

['test/1.txt', 'test/2.txt', 'test/test.txt', 'test/test.py']

>>> z.infolist()

[, , , ]

>>> z.getinfo("test/1.txt")

>>> t = z.open("test/1.txt")

>>> ret = t.read()

>>> ret

b'asdasdasd'

ZipFile.extract(member, path=None, pwd=None)

解壓?jiǎn)蝹€(gè)文件。核心方法之一。將ZIP文件中的某個(gè)成員解壓到當(dāng)前目錄。member必須是完整名,path是指定的解壓目錄。解壓的過(guò)程不會(huì)破壞原壓縮文件。

ZipFile.extractall(path=None, members=None, pwd=None)

批量解壓文件。默認(rèn)是全部解壓。核心方法之一。

>>> z.extract("test/1.txt")

'C:\\Python36\\test\\1.txt'

>>> z.namelist()

['test/1.txt', 'test/2.txt', 'test/test.txt', 'test/test.py']

>>> z.extractall()

>>> z.namelist()

['test/1.txt', 'test/2.txt', 'test/test.txt', 'test/test.py']

>>> z.wirte(r"d:\3.txt")

Traceback (most recent call last):

File "", line 1, in

z.wirte(r"d:\3.txt")

AttributeError: 'ZipFile' object has no attribute 'wirte'

>>> z.close()

>>> z = zipfile.ZipFile(r"d:\test.zip", "w")

>>> z.namelist()

[]

>>> z.write(r"d:\3.txt")

>>> z.close()

>>> z = zipfile.ZipFile(r"d:\test.zip", "a")

>>> z.write(r"d:\3.txt")

Warning (from warnings module):

File "C:\Python36\lib\zipfile.py", line 1349

return self._open_to_write(zinfo, force_zip64=force_zip64)

UserWarning: Duplicate name: '3.txt'

>>> z.write(r"d:\4.txt")

>>> z.namelist()

['3.txt', '3.txt', '4.txt']

>>> z.close()

ZipFile.printdir()

在stdout上打印ZIP文件的目錄表。

ZipFile.setpassword(pwd)

設(shè)置通用的解壓密碼,用于解壓加密壓縮文件。

ZipFile.read(name, pwd=None)

從已打開的ZIP文件成員中讀取數(shù)據(jù)。

ZipFile.testzip()

校驗(yàn)ZIP文件完整性。

ZipFile.writestr(zinfo_or_arcname, data[, compress_type])

往ZIP文件里添加字符串類型數(shù)據(jù)

ZipFile.filename

ZIP文件的名字

ZipFile.debug

調(diào)試輸出的級(jí)別。從0到3。

ZipFile.comment

ZIP文件的注釋內(nèi)容。

總結(jié)

zipfile模塊其實(shí)很簡(jiǎn)單,記住下面幾個(gè)重要的方法就可以了。

方法

用途

z = zipfile.ZipFile()

打開或者新建一個(gè)zip文件對(duì)象

z.write()

添加文件到壓縮包內(nèi)

z.infolist()

查看壓縮包內(nèi)的文件信息

z.extract()

解壓?jiǎn)蝹€(gè)文件

z.extractall()

解壓所有文件

z.close()

關(guān)閉壓縮文件

評(píng)論總數(shù): 0

總結(jié)

以上是生活随笔為你收集整理的python zipfile_python zipfile - 刘江的python教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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