1)怎么压缩备份多个文件
使用zipfile
创建压缩文件
查看信息
解压缩
# 创建
import zipfile
# os.chdir('test')
my_zip = zipfile.ZipFile('xxx.zip', 'w') # 创建对象,写入文件
# my_zip.write?
my_zip.write('1.pdf', compress_type=zipfile.ZIP_DEFLATED)
my_zip.write('1.doc', compress_type=zipfile.ZIP_DEFLATED)
my_zip.close() # 关闭文件
# 查看
xxx = zipfile.ZipFile('xxx.zip')
xxx.namelist()
# 解压缩
xxx = zipfile.ZipFile('xxx.zip')
xxx.extractall('..') # 参数可选,当前目录,或者指定
xxx.close()
2) 代码备份机
打包压缩
自动命名
打包前进行文件筛选,只备份特定文件
(定时
# 打包
import zipfile
import os
def zip_all(from_dir, target_name):
"""把目录中每个文件写入zip文件"""
my_zip = zipfile.ZipFile(target_name, 'w') # 创建对象,写入文件
# my_zip.write
for root, dirs, files in os.walk(from_dir):
for name in files:
filename = os.path.join(root, name) # 根目录下的文件名
print(filename)
my_zip.write(filename, compress_type=zipfile.ZIP_DEFLATED)
my_zip.close() # 关闭文件, 注意在最后所有文件添加完毕再关
# 自动命名, 以递增为例
def auto_name(source_name):
new_name = '1.zip'
# 判断文件是否存在,单纯if只是判断是否为空
# 还需要进一步判断
if source_name: # a-1.zip, a-2.zip, a-3.zip...a-11.zip
# 方法1.split拆分
new_name = source_name.split('-')[0] + '-'
+ str(int(source_name.split('-')[1].split('.')[0])+1)
+ '.zip'
# 方法2,正则
return new_name
# 文件筛选
def zip_all_by_name(from_dir, target_name, keywords):
pass
# 测试
base_dir = r'C:UserssothiDesktoppy2018 2-auto est'
target = os.path.join(base_dir, auto_name('a-6.zip'))