最近在学习《简明python教程》时,被其中的例10 备份脚本给卡住了
明明是照着书上码出来,为何总是失败,一运行就提示:'zip' 不是内部或外部命令,也不是可运行的程序或批处理文件。
ps:windows系统下 已将source和target 路径由 '/Work' 转换为 r'D:\Work' (或 ‘D:\\Work’) 注意Linux与windows中斜杠的方向不同
当前代码:
import os
import time
source = [r'D:\tools\python\project\if.py',r'D:\tools\python\project\seq.py']
target_dir = r'D:\Work\Work'
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command = "zip -qr '%s' %s"%(target,''.join(source))
if os.system(zip_command)==0:
print 'Successful backup to',target
else:
print 'Backup Failed'
作为一个小白,一脸懵逼的以为自己代码写错了,反复核对 甚至将其中代码直接复制过来,运行后依然是失败
终于想起了百度,一搜之下 顿时感觉吾道不孤啊,类似问题比比皆是,不过一经试验,还是图样图森破啊,依然每次都以失败告终
经过多方尝试与组拼,最终解决方法如下:
1.下载7-Zip并安装(报错原因是当前电脑无zip程序)
2.将安装文件中的7z.exe移至‘C:\Windows’目录下
3.将程序中的 zip_command = "zip -qr '%s' %s"%(target,''.join(source))
改为:zip_command = "7z a %s %s"%(target, ' '.join(source))
再运行便会发现,文件备份并压缩成功啦
附代码
import os
import time
source =[r'D:\tools\python\project\if.py',r'D:\tools\python\project\seq.py']
target_dir = r'D:\Work\Work'
target = target_dir + time.strftime('%Y%m%d%H%M%S')+'.rar'
rar_command = "winrar a %s %s"%(target, ' '.join(source))
if os.system(rar_command)==0:
print 'Successful backup to',target
else:
print 'Backup Failed'