关于python中zip命令的使用!!!!

关于解决问题这里第一个代码就折腾了我好久啊~先附上我执行出来的代码!

代码:

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时却显示无法识别,所以我最终是选择直接添加新的环境变量,如图:

关于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、主要还是在于引号、空格、转义字符的使用不当。