关于解决问题这里第一个代码就折腾了我好久啊~先附上我执行出来的代码!
代码:
import os import time source=['"E:\\seminar"'] target_dir='E:\\!\\backup' target=target_dir+os.sep+time.strftime('%Y%m%d%H%M%S')+'.zip' if not os.path.exists(target_dir): os.mkdir(target_dir) zip_command = "zip -r \"%s\" \"%s\"" %(target,source[0]) print('Zip command is:') print(zip_command) print('Running:') if os.system(zip_command)==0: print('Successful backup to', target) else: print('Backup FAILED')
这个一个过程怎么有点儿痛苦啊~但是最终运行出来了还是很兴奋的。我将会把我在这个过程中遇到的问题一一整理出来。
首先,是关于zip命令以及添加环境变量的环节。
按python简明教程上的先下载并安装zip命令(保存到C盘)。链接(在简明教程电子版本中有链接):点击打开链接
然后添加环境变量。我最开始是跟添加python命令一样的编辑操作,但在命令提示符中输入zip时却显示无法识别,所以我最终是选择直接添加新的环境变量,如图:
接下来,我对代码进行去如下修改:
1、我把代码第五行紫色部分的time.strftime前面的 \ 删除掉了:是因为在一个字符串中,一个放置在末尾的反斜杠表示字符串将在下一行继续,但不会添加新的一行。详见简明教程35页。
2、我对代码第八行红色部分进行了修改:这里的修改部分一开始我是参考该博主的方法:点击打开链接
该文主要修改在于:如何能让zip命令接受带空格路径,google了一下,看到提示:“带有空格的通配符或文件名必须加上引号”
这里用format()一样可以实现的,示例:
zip_command = 'zip -r {0} {1}'.format(target,source[0])
还有就是因为我只备份了一个文件夹,所以没有使用b.join(a)的方法来联结,而是直接采用[]来指定列表中的字符串;若要备份两个文件夹,就和书上一样处理就行了~
我再执行出来后对之前的一些疑问逐一排除,发现自己之前弄不出绝大部分是因为1、环境变量未设置好;2、主要还是在于引号、空格、转义字符的使用不当。