Python學習:終於壓縮成功了!
在看簡明Python文件時,有一個程式練習,讓壓縮一個檔案
一開始完全看不懂。複製過來一執行,cmd顯示 zip不是批處理或可執行。說明程式碼對,但zip命令不對。
上網搜才明白是我的windows裡沒有zip。
後又看到一人用rar來壓縮,就有去找winrar。也漸漸明白程式中各變數的意義
安好winrar後,path總是設不對,正好無意間又看到有人用windows自帶的壓縮解壓命令處理檔案,救試了一試。
makecab source target[zip] 成功!
expand source[zip] target 成功!
再看程式碼
zip_command =
"zip -qr '%s' %s"
% (target,
' '
.join(source))
問題出在這句,無非就是把cmd命令給了zip_command這個變數嘛。
我把zip -qr 改成makecab就可以啦嘛。
於是cmd不提示找不到命令了。卻找不到檔案。
反正也是把target source傳給%s 和%s
直接簡化!
zip_command =
"makecab %s %s"
% (source,target
)
一目瞭然。再一執行,還是找不到檔案!
找不到就試,試了幾次發現問題。cmd 的提示是
ERROR:Could not find file:['w:\\important.txt']
哈,原來是中括號沒去掉。
回看程式碼,我把source直接傳給%s 可source定義成序列了呀。直接傳自然有中括號
source=['w:\\important.txt']
所以這裡還是要用下表運算子指出source中的哪一個元素,即使它只有一個元素。
最終改為
zip_command =
"makecab %s %s"
% (source[0],target
)
Nice!'Successful backup to w:\beifen.zip!
附上原始碼:
import os import time source= ['w:\important.txt'] target_dir='w:\\' target=target_dir+'beifen'+'.zip' zip_command="makecab %s %s" % (source[0],target) if os.system(zip_command)==0: print 'Successful backup to',target else: print 'backup failed'