最近剛剛開始學習python,現在分享乙個小**,實現檔案的壓縮與解壓。希望能給那些和我一樣,剛剛學習python的小夥伴們一些小小幫助。
方法一:通過zipfile模組實現檔案的壓縮與解壓
# -*- coding:utf8 -*-
import zipfile
import time
import os
# 使用zipfile('壓縮包完整路徑')方法獲得壓縮檔案
zipfiles=zipfile.zipfile(r'd:\python\python27\backuptestproject\20180719\134059_test2_projet.zip')
# 返回該壓縮包下的資料夾與檔名稱
print (zipfiles.namelist())
print (zipfiles.namelist()[1])
# 獲取zip檔名(包括完整路徑)
print zipfiles.filename
# 法1:(使用檔案路徑直接讀取檔案內容)
text = zipfiles.read('python/python27/testproject/hello.py').decode('utf-8')
print(text)
# 獲取hello.py檔案(通過壓縮檔案路徑加檔名獲得,
# 注意路徑是從開啟壓縮包的第乙個資料夾名稱算起,不包含壓縮包名字)
hellofile = zipfiles.getinfo('python/python27/testproject/hello.py')
# 法2:或通過剛剛獲取的hello.py檔案直接開啟讀取(先獲取檔案再讀內容)
text2 = zipfiles.open(hellofile).read()
print('-------------------------分隔符----------------------------')
print text2
# 迴圈讀取壓縮包下所有檔案內容與檔案名字
name = '' # 定義乙個name變數,用來記錄壓縮包裡的檔名
for i in zipfiles.namelist(): # for迴圈,in後面必須為序列,此時為檔名列表
name = i # i即是當前檔名
if name.find('.py') != -1: # 若果檔案中包含.py則繼續處理
print '檔案名字是:',name # 輸出檔名
print '檔案內容是:'
print zipfiles.read(name) # 輸出檔案內容(檔案的名即為在壓縮包中檔案對應的路徑)
print '---------next----------'
# 解壓檔案到指定路徑(若不指名路徑則會解壓到當前工作目錄)
zipfiles.extractall(r'd:\python\python27\backuptestproject'+os.sep+time.strftime('%y%m%d'))
#壓縮資料夾
# 使用zipfile('壓縮包完整路徑')方法獲得壓縮檔案
zipfiles1=zipfile.zipfile(r'd:\python\python27\backuptestproject\20180719\test.zip','w') # 指定壓縮包生成路徑與名字,使用引數'w'當壓縮包不存在時則建立新的;若存在則覆蓋
# os.walk(r'd:\python\python27\testproject')會遞迴查詢,遍歷所有入參目錄下資料夾,取出所有檔案
for current_path, subfolders, filesname in os.walk(r'd:\python\python27\testproject'): # 使用此形式可以獲得當前路徑current_path(當前路徑為walk引數的路徑,當引數路徑下有資料夾時,當前路徑會轉為引數路徑下的資料夾處截止),當前路徑下的子目錄subfolders,當前目錄下檔名filesname
print filesname
for file in filesname:
zipfiles1.write(os.path.join(current_path, file)) # 檔案壓縮,壓縮路徑為引數路徑
zipfiles.close() # 使用之後要關閉zipfile
方法二:通過呼叫系統zip命令實現檔案備份(壓縮)
# -*- coding:utf8 -*-
# !/usr/bin/python
# filename: backup_ver1.py
# 備份檔案
import os
import time
# 1. 需要備份的路徑(生成的壓縮包會保持此路徑結構)
source = r'd:\python\python27\testproject'
# if you are using windows, use source = [r'c:\documents', r'd:\work'] or something like that
# 2. 想要儲存備份的主目錄
target_dir = r'd:\python\python27\backuptestproject' # remember to change this to what you will be using
# 如果目標目錄還不存在,則進行建立
if not os.path.exists(target_dir):
os.mkdir(target_dir)
# 建立當天的資料夾(資料夾路徑為:備份主目錄下生成當天年月日命名的資料夾),如果當天命名的資料夾不存在,則新建
today_dir = target_dir+os.sep+time.strftime('%y%m%d') # os.sep產生路徑分隔符。即在linux、unix下它是'/',在windows下它是'\\',而在mac os下它是':'。使用os.sep而非直接使用字元,會使我們的程式具有移植性,可以在上述這些系統下工作。
if not os.path.exists(today_dir):
os.mkdir(today_dir)
# 3. the files are backed up into a zip file.
# 4. 拼裝完整壓縮包資訊(路徑+壓縮包名+.zip字尾):
# 注意today_dir後面要追加\分割符(但是windows中\為轉義字元,所以要寫\\),如果不寫分隔符則會將最後的backuptestproject作為檔名的一部分
# target = today_dir +os.sep+ time.strftime('%h%m%s') + '.zip' # 目前的日期和時間,我們使用time.strftime()函式獲得
# 手工輸入字串,拼裝target路徑(若沒有輸入,則使用原來target;若輸入有值,則將值加入zip名稱中)
comment = raw_input('please enter comment -->')
if len(comment) == 0:
target = today_dir + os.sep + time.strftime('%h%m%s') + '.zip'
else:
target = today_dir + os.sep + time.strftime('%h%m%s') +\
'_'+comment.replace(' ','_')+ '.zip'
# 5. 拼裝 zip command 字串
zip_command = "zip -qr %s %s" % (target, source)
# run the backup
if os.system(zip_command) == 0: # os.system函式執行命令,就像在系統中執行命令一樣。系統執行zip命令,若執行成功會返回0
print 'successful backup to', target
else:
print 'backup failed'
# 輸出:改進版本二,提示輸入,將輸入的字串拼到zip名字裡,每次都在目標路徑下生成乙個年月日命名的資料夾,資料夾裡是時分秒命名的zip,此時更有層次感
python實現檔案的壓縮與解壓縮
shutil對壓縮包的處理是通過呼叫zipfile和tarfile兩個模組來進行的。對於zip檔案來說 import zipfile zipfile壓縮 z zipfile.zipfile ss.zip w zipfile.zip stored 打包,zipfile.zip stored是預設引數 ...
檔案壓縮與解壓
檔案的壓縮 1.讀取檔案的內容 2.統計每個字元出現的次數 int read while read bis.read 1 直至讀到檔案結束 arrays為運算元組的工具類 collections為操作集合工具類 bis.close 3.構建哈弗曼樹,生成哈夫曼編碼 if node.getleftno...
檔案壓縮與解壓
檔案壓縮與解壓思想 1 統計字元出現次數,結合最小堆的性質生成哈夫曼樹 2 對葉節點進行編碼,結點左邊編 0,右邊編1 3 讀取檔案,用哈夫曼編碼代替字元產生新的字元,即壓縮 4 讀取壓縮檔案,進行哈夫曼編碼的解讀產生相應字元,即解壓 例如,對以下資料生成哈夫曼樹,以及產生相應的哈夫曼編碼 自己寫的...