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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python zipfile_python zipfile - 刘江的python教程

發布時間:2024/10/12 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python zipfile_python zipfile - 刘江的python教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

zipfile

閱讀:?12164

評論:0

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

定義的類和異常

class zipfile.ZipFile

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

class zipfile.PyZipFile

創建包含Python庫的ZIP歸檔文件的類

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

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

zipfile.is_zipfile(filename)

如果文件是個ZIP文件則返回True,否則False。

zipfile.ZIP_STORED

未壓縮的歸檔文件的數字常數。

zipfile.ZIP_DEFLATED

常用的ZIP壓縮方法。

zipfile.ZIP_BZIP2

BZIP2壓縮方法的數字常量。

zipfile.ZIP_LZMA

LZMA壓縮方法的數字常量。

exception zipfile.BadZipFile

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

exception zipfile.LargeZipFile

當需要ZIP64功能,但未開啟該功能時彈出異常。

ZipFile對象

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

打開一個ZIP文件。返回的也是一個類似文件的ZipFile對象,可以讀寫。

file可以是一個文件地址字符串、文件類對象或地址類對象。mode參數為r時,表示讀取一個已經存在的文件;為w的時候表示覆蓋或寫入一個新文件;為a時表示在已有文件后追加;為x時表示新建文件并寫入。x模式下,如果文件名已經存在,則拋出FileExistsError異常。這些特點和open()方法打開文件一樣樣的。

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

當文件大小超過4GB時,將使用ZIP64擴展(默認啟用)。

在w/x/a模式下,如果沒有寫入任何數據就close了,則會生成空的ZIP文件。

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

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

myzip.write('eggs.txt')

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

往ZIP文件里添加新文件,單個文件可以重復添加,但是會彈出警告。如果指定arcname參數,則在ZIP文件內部將原來的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()

確保壓縮文件被正確關閉。

ZipFile.getinfo(name)

返回一個被壓縮成員的ZipInfo對象。如果ZIP文件中沒有該名字,將拋出異常。

ZipFile.infolist()

返回一個包含ZIP文件內所有成員信息的ZipInfo對象。

ZipFile.namelist()

返回ZIP文件內所有成員名字列表。

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

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

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

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

print(myfile.read())

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

w模式為寫入模式,支持write()方法。此時對ZIP文件內其它成員的讀寫將拋出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)

解壓單個文件。核心方法之一。將ZIP文件中的某個成員解壓到當前目錄。member必須是完整名,path是指定的解壓目錄。解壓的過程不會破壞原壓縮文件。

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

批量解壓文件。默認是全部解壓。核心方法之一。

>>> 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)

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

ZipFile.read(name, pwd=None)

從已打開的ZIP文件成員中讀取數據。

ZipFile.testzip()

校驗ZIP文件完整性。

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

往ZIP文件里添加字符串類型數據

ZipFile.filename

ZIP文件的名字

ZipFile.debug

調試輸出的級別。從0到3。

ZipFile.comment

ZIP文件的注釋內容。

總結

zipfile模塊其實很簡單,記住下面幾個重要的方法就可以了。

方法

用途

z = zipfile.ZipFile()

打開或者新建一個zip文件對象

z.write()

添加文件到壓縮包內

z.infolist()

查看壓縮包內的文件信息

z.extract()

解壓單個文件

z.extractall()

解壓所有文件

z.close()

關閉壓縮文件

評論總數: 0

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。