用python一键批量压缩&备份文件,不必再用鼠标点点点

枫铃3年前 (2021-07-09)Python281

很多人会定期压缩备份一下自己的文件,但每次一个个文件压缩移动很麻烦,整理耗时又费力。

面对这些问题,只要用Python的zipfile包,几句代码就够了,大大提高了工作效率!

今天我们就来教大家如何使用python批量压缩备份文件吧!

1.首先打开你想批量备份的文件,可以看到文件很多,备份不易:

在这里插入图片描述

2.导入zipfile,这个是用来做压缩和解压的Python模块;

导入os模块,主要是获取文件路径,创建文件等操作;

导入time模块,主要是用来获取当前的日期:

import  zipfile
import os
import time

3.指定需要压缩的文件夹路径(其内的每一个文件都会被压缩并保存在指定的目的地文件夹);

需要说明的是字符串前面的字母 r是用来防转义的,也就是说字符串中的斜杠只是单纯的斜杠不是转义字符。

start_dir = r"C:\Users\admin\Desktop\批量备份打包\压缩测试"  

4.指定用来存放压缩文件的目的地文件夹,该文件夹下会根据压缩日期创建子文件夹:

target_dir = r"C:\Users\admin\Desktop\批量备份打包\备份目的地文件夹"

5.在目的地文件夹下创建子文件夹,当然目前只是一个代表路径的字符串,真正创建文件夹需要

os.mkdir(today);
os.sep 代表在路径中的一个 \ ;

其中time.strftime(’%Y%m%d’) 代表当前的年月日,%Y代表年,%m代表月份,%d代表日期:

 today = target_dir + os.sep + time.strftime('%Y%m%d')

6.如果当前日期的文件夹不存在那么就创建一个,如果存在就不需要创建了:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
if not os.path.exists(today):

    os.mkdir(today)

    print('Successfully created directory', today)

7.取出start_dir文件夹下的每个文件进行压缩备份;
os.listdir(start_dir)是start_dir文件夹下的每个文件的名字构成的列表:

for item in os.listdir(start_dir):

8.在目的地文件夹下创建压缩后文件夹的名字,例如"C:\Users\admin\Desktop\批量备份打包\备份目的地文件夹\20191008\1.txt.zip":

file_news = today+os.sep+item+'.zip' 

9.通过对象对file_news进行写入操作,file_news代表的是压缩文件名,'w’代表写入文件:

z = zipfile.ZipFile(file_news,'w') #参数一:文件夹名

10.从开始文件夹里面拿出文件,写入到对象z;
start_dir+os.sep+item代表的是要写入z的文件是哪一个;
item代表的是只写入文件本身而不包含其完整的路径:

z.write(start_dir+os.sep+item,item)

11.完成写入后关闭z对象,报告显示item压缩成功:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
z.close()


 print(item)

 print ('压缩成功')

12.压缩结果:

在这里插入图片描述

这段代码是一套模板,不管有多少文件需要压缩备份,只需根据你的需要修改压缩备份的文件夹路径和目的地文件夹路径即可,一键实现批量文件压缩备份,是不是解放了更多时间,可以投入到更有意义的事情上呢?

相关文章

python字典的增,删,改,查

字典—dict 1.字典是无序,可变的数据类型 2.字典:用于存储数据,存储大量数据,字典要比列表快,...

网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

1 引言 在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)...

Python 中的 sys.argv 用法

sys.argv是获取运...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。