python基础--压缩文件

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:\Users\sothi\Desktop\py2018\02-auto\test'
target = os.path.join(base_dir, auto_name('a-6.zip'))

猜你喜欢

转载自www.cnblogs.com/lixiang1013/p/9216296.html