導航:首頁 > 文件處理 > python解壓縮gz

python解壓縮gz

發布時間:2023-01-08 03:12:17

python怎樣壓縮解壓縮ZIP文件

Python壓縮ZIP文件:

importzipfile
f=zipfile.ZipFile(target,'w',zipfile.ZIP_DEFLATED)
f.write(filename,file_url)
f.close()

其中target:是壓縮後要保存的路徑,可以是: 'C:/temp/'
ZIP_DEFLATED:表示壓縮,還有一個參數:ZIP_STORE:表示只打包,不壓縮。

這個Linux中的gz跟tar格式有點類似.

write方法如果只有一個參數filename的話,表示把你filename所帶的路徑全部壓縮到zip文件中。如果帶兩個參數,表示把filename路徑中的那個file壓縮一下並且存放到file_url中,中間沒有增加任何的文件夾
如果要壓縮很多的文件,循環的write就ok了, 最後close掉。
Python解壓ZIP文件:

f=zipfile.ZipFile("zipfilePath",'r')
forfileinf.namelist():
f.extract(file,"temp/")

zipfilePath是壓縮文件的路徑
循環訪問該壓縮文件中的文件,並且一個一個file的解壓到對應的"temp"文件夾中

Ⅱ python怎樣壓縮和解壓縮ZIP文件

1、說明

python使用zipfile模塊來壓縮和解壓zip文件

2、代碼

importos,os.path
importzipfile

defzip_dir(dirname,zipfilename):
filelist=[]
ifos.path.isfile(dirname):
filelist.append(dirname)
else:
forroot,dirs,filesinos.walk(dirname):
fornameinfiles:
filelist.append(os.path.join(root,name))

zf=zipfile.ZipFile(zipfilename,"w",zipfile.zlib.DEFLATED)
fortarinfilelist:
arcname=tar[len(dirname):]
#printarcname
zf.write(tar,arcname)
zf.close()


defunzip_file(zipfilename,unziptodir):
ifnotos.path.exists(unziptodir):os.mkdir(unziptodir)
zfobj=zipfile.ZipFile(zipfilename)
fornameinzfobj.namelist():
name=name.replace('\','/')

ifname.endswith('/'):
os.mkdir(os.path.join(unziptodir,name))
else:
ext_filename=os.path.join(unziptodir,name)
ext_dir=os.path.dirname(ext_filename)
ifnotos.path.exists(ext_dir):os.mkdir(ext_dir)
outfile=open(ext_filename,'wb')
outfile.write(zfobj.read(name))
outfile.close()

if__name__=='__main__':
zip_dir(r'd:/python/test',r'd:/python/test.zip')
unzip_file(r'd:/python/test.zip',r'd:/python/test2')

執行結果

順利生成相應文件

3、備注

zip文件格式是通用的文檔壓縮標准,在zipfile模塊中,使用ZipFile類來操作zip文件,下面具體介紹一下:
class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

創建一個ZipFile對象,表示一個zip文件。參數file表示文件的路徑或類文件對象(file-like object);參數mode指示打開zip文件的模式,默認值為'r',表示讀已經存在的zip文件,也可以為'w'或'a','w'表示新建一個zip文檔或覆蓋一個已經存在的zip文檔,'a'表示將數據附加到一個現存的zip文檔中。參數compression表示在寫zip文檔時使用的壓縮方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超過2G,應該將allowZip64設置為True。

ZipFile還提供了如下常用的方法和屬性:
ZipFile.getinfo(name):

獲取zip文檔內指定文件的信息。返回一個zipfile.ZipInfo對象,它包括文件的詳細信息。將在下面 具體介紹該對象。
ZipFile.infolist()

獲取zip文檔內所有文件的信息,返回一個zipfile.ZipInfo的列表。
ZipFile.namelist()

獲取zip文檔內所有文件的名稱列表。
ZipFile.extract(member[, path[, pwd]])

Ⅲ python 如何批量解壓多個gz壓縮包

長按,後來繼續點擊解壓就可以全部解壓。

Ⅳ 下載python然後有一堆文件要解壓

python一堆文件解壓方法如下。

壓縮包解壓要用的是zipfile這個包。

zip_file = zipfile.ZipFile(r'D:數據源XX_%s.zip'%yday)

zip_list = zip_file.namelist() # 壓縮文件清單,可以直接看到壓縮包內的各個文件的明細

for f in zip_list: # 遍歷這些文件,逐個解壓出來,

zip_file.extract(f,r'D:數據源')

zip_file.close() # 不能少!

print('昨日日誌解壓完成,請在文件夾中驗收!') # 當然我是不需要查收的(*/ω\*)

這里的解壓操作實際就相當於滑鼠右鍵「解壓到當前文件夾」的效果。

完成解壓後運行.close()是個比較好的習慣,否則可能會導致包括但不限於:

文件會一直被佔用著,可能無法重新打開;

在進程結束之前文件都刪不掉;

文件內容不能即時 flush 到磁碟直到進程結束;

到此,整個流程在無需打開瀏覽器和文件夾的情況下便自動完成了。

為了方便日常運行代碼,這里把上面的兩個流程包裝成一個函數,下載解壓

#下載昨日日誌

def download_XXlog():

yday = (date.today()+timedelta(days=-1)).strftime('%Y%m%d') # 獲取昨日日期

r = requests.get('http://XXXXXXXX/XX_%s.zip'%yday) # 獲取以日期命名的壓縮包信息

with open(r'D:數據源XX_%s.zip'%yday,'wb') as code: # 將壓縮包內容寫入到 "D:數據源" 下,並按日期命名

code.write(r.content)

print('昨日XX日誌下載完成。')

zip_file = zipfile.ZipFile(r'D:數據源XX_%s.zip'%yday)

zip_list = zip_file.namelist() # 壓縮文件清單,可以直接看到壓縮包內的各個文件的明細

for f in zip_list: # 遍歷這些文件,逐個解壓出來,

zip_file.extract(f,r'D:數據源')

zip_file.close() # 不能少!

print('昨日日誌解壓完成,請在文件夾中驗收!')

download_XXlog()

拓展

作為拓展,這里再加一個可以根據實際情況輸入(input)起始和終止日期,來下載一個特定時間段日誌的函數,這里就涉及了datetime和time這兩個工具包了。

Ⅳ python怎樣壓縮和解壓縮ZIP文件

1、python使用zipfile模塊壓縮和解壓ZIP文件
2、讀取zip文件
首先,通過zipfile模塊打開指定zip文件,如:
zpfd = zipfile.ZipFile(path, mode='r')
對於zipfile,其標志與open所用的打開文件標志有所不同,不能識別 'rb'。
然後,讀取zip文件中的內容,zipfile對象提供一個read(name)的方法,name為zip文件中的一個文件入口,執行完成之後,將返回讀出的內容,如:
for filename in zpfd.namelist():
tmpcont = zpfd.read(filename)
print 'len(tmpcont)', 'tmpcont'
需要注意的是,讀取zip文件時,只能讀取內容
3、寫入zip文件
首先,需要zipfile模塊寫打開或創建zip文件,如:
zpfd = zipfile.ZipFile(path, mode='w')
寫打開是標志可以為'w'或'a'('a'表示寫入一個zip文件), 或者傳入第三個參數cmopression壓縮標志
compression=zipfile.ZIP_DEFLATED 需要導入zlib模塊
compression=zipfile.ZIP_STORED則表示只對文件進行打包,並不壓縮

入有兩種方式,一種是直接寫入一個已經存在的文件,可使用zipfile對象中write(filename, arcname,
compress_type)第一個參數為文件名,第二個參數指寫入zip文件中的文件名,默認與filename一致,第三個參數壓縮標志可以覆蓋打開
zipfile時的使用參數;另一種是寫入一個字元串,可使用zipfile對象中的writestr(zinfo_or_arcname,
bytes),第一個參數是zipinfo對象或寫到zip文件中的壓縮名,第二個參數是待寫入的字元串
4、最後,對於打開的zipfile對象需要進行關閉,從而使得寫入內容真正寫入磁碟,即:
zpfd.close()

Ⅵ 如何用Python寫一個暴力破解加密壓縮包的程

有些時候加密rar軟體經常會忘了密碼,但記得密碼的大概,於是乎用Python寫個程序來暴力破解吧:
首先要搞清楚如何用命令行來解壓縮,經研究,rar軟體解壓是用的unrar.exe,將這個程序拷貝到C:\windows,然後進入加密軟體包所在的文件夾,用命令行運行 下面的命令:
unrar.exe e -pabcd 123.rar

程序就是先前拷到C:\windows,然後參數e是指相對路徑,如果在是本文件夾下運行這個命令,則只打文件名就可以了,輸入密碼的方式是-p後面的欄位,假定是abcd,最後面的是要解壓的文件名。
下面我們解決如何用Python來運行windows下的命令行
import subprocess
command = 'unrar.exe e -n -pabcd 123.rar'
subprocess.call(command)

這樣也可以完成解壓,既然這樣,那就開干吧,寫一個暴力循環,我以4位字母為例,字母加的不全,實際使用可以視情況添加
list1=['a','b','c','d']
list2=['a','b','c','d']
list3=['a','b','c','d']
list4=['a','b','c','d']

for i1 in range(0,len(list1),1):
for i2 in range(0,len(list2),1):
for i3 in range(0, len(list3), 1):
for i4 in range(0, len(list4), 1):
password=list1[i1]+list2[i2]+list3[i3]+list4[i4]
print(password)
command = 'unrar.exe e -n -p' + password + ' 123.rar'
child = subprocess.call(command)
if child == 0:
print('解壓密碼是:',password)
break

child是返回值,為0表示解壓成功,可以挑出循環並列印密碼了,我實測,4位純數字或者字母,只需要十多秒就出來了,非常簡單

Ⅶ python怎樣壓縮和解壓縮ZIP文件

有時我們需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已經提供了 zipfile 模塊可以進行這樣的操作。不過 Python 中的 zipfile 模塊不能處理多卷的情況,不過這種情況並不多見,因此在通常情況下已經足夠使用了。下面我只是對一些基本的 zipfile 操作進行了記錄,足以應付大部分的情況了。
zipfile 模塊可以讓你打開或寫入一個 zip 文件。比如:
import zipfile
z = zipfile.ZipFile('zipfilename', mode='r')
這樣就打開了一個 zip 文件,如果mode為'w'或'a'則表示要寫入一個 zip 文件。如果是寫入,則還可以跟上第三個參數:
compression=zipfile.ZIP_DEFLATED 或
compression=zipfile.ZIP_STORED ZIP_DEFLATED是壓縮標志,如果使用它需要編譯了zlib模塊。而後一個只是用zip進行打包,並不壓縮。
在打開了zip文件之後就可以根據需要是讀出zip文件的內容還是將內容保存到 zip 文件中。
讀出zip中的內容
很簡單,zipfile 對象提供了一個read(name)的方法。name為 zip文件中的一個文件入口,執行完成之後,將返回讀出的內容,你把它保存到想到的文件中即可。
寫入zip文件
有兩種方式,一種是直接寫入一個已經存在的文件,另一種是寫入一個字元串。
對 於第一種使用 zipfile 對象的 write(filename, arcname, compress_type),後兩個參數是可以忽略的。第一個參數是文件名,第二個參數是表示在 zip 文件中的名字,如果沒有給出,表示使用與filename一樣的名字。compress_type是壓縮標志,它可以覆蓋創建 zipfile 時的參數。第二種是使用 zipfile 對象的 writestr(zinfo_or_arcname, bytes),第一個參數是zipinfo 對象或寫到壓縮文件中的壓縮名,第二個參數是字元串。使用這個方法可以動態的組織文件的內容。
需要注意的是在讀出時,因為只能讀出內容,因此如果想實現按目錄結構展開 zip 文件的話,這些操作需要自已來完成,比如創建目錄,創建文件並寫入。而寫入時,則可以根據需要動態組織在 zip 文件中的目錄結構,這樣可以不按照原來的目錄結構來生成 zip 文件。
於是我為了方便使用,創建了自已的一個 ZFile 類,主要是實現象 winrar 的右鍵菜單中的壓縮到的功能--即將一個zip文件壓縮到指定目錄,自動創建相應的子目錄。再有就是方便生成 zip 文件。類源碼為:
# coding:cp936
# Zfile.py
# xxteach.com
import zipfile
import os.path
import os
class ZFile(object):
def __init__(self, filename, mode='r', basedir=''):
self.filename = filename
self.mode = mode
if self.mode in ('w', 'a'):
self.zfile = zipfile.ZipFile(filename, self.mode, compression=zipfile.ZIP_DEFLATED)
else:
self.zfile = zipfile.ZipFile(filename, self.mode)
self.basedir = basedir
if not self.basedir:
self.basedir = os.path.dirname(filename)
def addfile(self, path, arcname=None):
path = path.replace('//', '/')
if not arcname:
if path.startswith(self.basedir):
arcname = path[len(self.basedir):]
else:
arcname = ''
self.zfile.write(path, arcname)
def addfiles(self, paths):
for path in paths:
if isinstance(path, tuple):
self.addfile(*path)
else:
self.addfile(path)
def close(self):
self.zfile.close()
def extract_to(self, path):
for p in self.zfile.namelist():
self.extract(p, path)
def extract(self, filename, path):
if not filename.endswith('/'):
f = os.path.join(path, filename)
dir = os.path.dirname(f)
if not os.path.exists(dir):
os.makedirs(dir)
file(f, 'wb').write(self.zfile.read(filename))
def create(zfile, files):
z = ZFile(zfile, 'w')
z.addfiles(files)
z.close()
def extract(zfile, path):
z = ZFile(zfile)
z.extract_to(path)
z.close()

閱讀全文

與python解壓縮gz相關的資料

熱點內容
ug如何啟動伺服器 瀏覽:444
csgo防抖動命令 瀏覽:960
如何弄到手機app頁面的源碼 瀏覽:441
androidwindows7破解版 瀏覽:363
解壓視頻動畫怎麼拍 瀏覽:748
連漲啟動源碼 瀏覽:163
小奔運動app網路異常怎麼回事 瀏覽:449
php開啟壓縮 瀏覽:305
伺服器主機如何設置啟動 瀏覽:284
linux配置網路命令 瀏覽:776
一張照片怎麼製作視頻app 瀏覽:910
pythonweb和php 瀏覽:978
電腦伺服器地址ip地址 瀏覽:823
對矩陣壓縮是為了 瀏覽:913
setfacl命令 瀏覽:175
linux子系統中斷 瀏覽:344
linux查看進程ps 瀏覽:228
知識庫系統php 瀏覽:626
小波變換壓縮圖像python 瀏覽:154
阿里巴巴程序員怎麼月入百萬 瀏覽:175