python解壓gzip
在Python中,我們主要利用zipfile模塊來進行ZIP文件的壓縮與解壓縮操作。首先,要讀取ZIP文件的內容,我們需通過zipfile.ZipFile()方法打開指定的zip文件,例如:zpfd = zipfile.ZipFile(path, mode='r')。需要注意的是,這里的mode參數與open()函數中的模式有所不同,它並不識別'rb',而是通過'r'來讀取文件。讀取文件內容時,我們可以使用namelist()方法列出所有文件名,然後通過read(filename)方法讀取特定文件的內容,如:for filename in zpfd.namelist(): tmpcont = zpfd.read(filename) print('len(tmpcont)', 'tmpcont')。
在讀取文件內容時,只能讀取文件內容而不能修改。接下來,我們來看如何寫入ZIP文件。首先,需要使用zipfile.ZipFile()方法以寫入或追加模式打開或創建一個zip文件,如:zpfd = zipfile.ZipFile(path, mode='w')。這里,mode參數可以是'w'(寫入)或'a'(追加),也可以傳入第三個參數compression來指定壓縮方式,如:compression=zipfile.ZIP_DEFLATED(使用zlib庫進行壓縮)或compression=zipfile.ZIP_STORED(僅打包,不壓縮)。寫入文件有多種方式,可以直接寫入一個已存在的文件,使用write(filename, arcname, compress_type)方法,其中第一個參數為文件名,第二個參數為寫入zip文件中的文件名,默認與filename一致,第三個參數壓縮標志可以覆蓋打開zipfile時的使用參數;也可以寫入一個字元串,使用writestr(zinfo_or_arcname, bytes)方法,其中第一個參數為zipinfo對象或寫入zip文件中的壓縮名,第二個參數為待寫入的字元串。
最後,對於打開的zipfile對象,需要調用close()方法關閉,以確保寫入的內容真正寫入磁碟,即:zpfd.close()。通過這種方式,我們就可以在Python中實現ZIP文件的壓縮和解壓縮操作。
㈡ 幾種不同壓縮與解壓縮格式,Python都可以
Python可以處理以下幾種常見的壓縮與解壓縮格式:
zip文件:
- Python內置的zipfile模塊提供了ZipFile和ZipInfo類,可用於創建和讀取zip文件。
tar.gz格式:
- Python的tarfile模塊支持gzip、bz2和lzma壓縮格式。
- 通過設置模式來讀取gzip壓縮的tar文件。
rar文件:
- 使用rarfile模塊進行解壓操作,但不支持直接壓縮。
- rarfile模塊依賴於unrar庫,需要根據操作系統進行安裝。
.7z文件:
- 利用py7zr組件進行壓縮和解壓操作。
總結:Python提供了豐富的庫來應對各種壓縮格式,無論是基本的zip文件,還是特殊的tar.gz、rar或.7z文件,都能找到相應的解決方案,從而有效提升工作效率。
㈢ python暴力破解zip加密文件
前言:日常工作中,會遇到一些加密的zip文件,但是因為某些原因或者時間過長,密碼不知道了。但是zip文件中文件有很重要很必須。那麼,我們試一試萬能的Python,暴力破解密碼。一、破解zip加密文件的思路:1、准備一個加密的zip文件。2、zipfile模塊可以解壓zip文件。解壓時可以提供密碼zfile.extractall("./",pwd=password.encode("utf8"))3、itertools.permutations實現全字元的全排列。通過函數itertools.permutations("abc",3)實現全字元的全排列:abc/acb/bca/bac/cab/cba二:實例代碼演示:0、zip的壓縮方式:本文介紹的zip文件知道密碼一共是4位的,密碼字元的范圍是a-z1-0。並且不存在重復字元的,不會有「aabb」的密碼。zip壓縮時是選擇了zip傳統加密!1、解壓zip文件:導入zipfile模塊,使用其中的extractall()函數。importitertoolsfilename="readme.zip"#創建一個解壓的函數,入參為文件名和密碼#並使用try-except,避免報錯中斷程序。defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalse2、實現密碼字元的全排列:="readme.zip"#創建一個解壓的函數,入參為文件名和密碼#並使用try-except,避免報錯中斷程序。defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalse#chars是密碼可能的字元集chars=""forcinitertools.permutations(chars,4):password=''.join(c)print(password)result=uncompress(filename,password)ifnotresult:print('解壓失敗。',password)else:print('解壓成功。',password)break文件壓縮時,一些注意的事項:
三、密碼是幾位未知,也可以破解密碼:查過一些資料,zip壓縮文件密碼最長為12位,在原來的程序上增加上一個for循環就可以實現破解密碼了。
="readme.zip"defuncompress(file_name,pass_word):try:withzipfile.ZipFile(file_name)asz_file:z_file.extractall("./",pwd=pass_word.encode("utf-8"))returnTrueexcept:returnFalsechars=""foriinrange(12):forcinitertools.permutations(chars,i):password=''.join(c)print(password)result=uncompress(filename,password)ifnotresult:print('解壓失敗。',password)else:print('解壓成功。',password)break總結:此方法可以是實現破解zip文件的密碼,python可以完成一些好玩的事情。