在看简明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'