1. 程式人生 > >Python學習:終於壓縮成功了!

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'