# 压缩解压

import os
import zipfile
def zip_file(src_dir):
    """
    压缩文件
    :param src_dir: 压缩文件夹路径
    """
    zip_name = src_dir + '.zip'
    z = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
    for dirpath, dirnames, filenames in os.walk(src_dir):
        fpath = dirpath.replace(src_dir, '')
        fpath = fpath and fpath + os.sep or ''
        for filename in filenames:
            z.write(os.path.join(dirpath, filename), fpath + filename)
            print('Compression success')
    z.close()
def unzip_file(zip_src, dst_dir):
    """
    解压文件
    :param zip_src: zip文件路径
    :param dst_dir: 解压目的路径
    """
    r = zipfile.is_zipfile(zip_src)
    if r:
        fz = zipfile.ZipFile(zip_src, 'r')
        for file in fz.namelist():
            fz.extract(file, dst_dir)
    else:
        print('This is not zip')

# 文件操作

import os
import shutil
from os.path import join, getsize
# 剪切(移动)文件到指定目录
shutil.move(src_file, dst_dir)
# 复制文件
shutil.copyfile(src_file, dst_file)
# 删除文件
os.remove(target_file)
# 新建文件夹
os.mkdir(target_dir)
# 遍历文件夹
for filename in os.listdir(target_dir):
    pass
# 删除文件夹
shutil.rmtree(target_dir)
# 获取文件夹大小
def get_dir_size(target_dir):
    size = 0
    for root, dirs, files in os.walk(target_dir):
        size += sum([getsize(join(root, name)) for name in files])
    return size
# 复制文件夹到指定文件夹
def copy_dir(src_dir, dst_dir):
    if os.path.isdir(src_dir) and os.path.isdir(dst_dir):
        filelist_src = os.listdir(src_dir)
        for file in filelist_src:
            src_path = os.path.join(os.path.abspath(src_dir), file)
            if os.path.isdir(src_path):
                dst_path = os.path.join(os.path.abspath(dst_dir), file)
                if not os.path.exists(dst_path):
                    os.mkdir(dst_path)
                copy_dir(src_path, dst_path)
            else:
                with open(src_path, 'rb') as read_stream:
                    contents = read_stream.read()
                    dst_path = os.path.join(dst_dir, file)
                    with open(dst_path, 'wb') as write_stream:
                        write_stream.write(contents)
        return True
    else:
        return False
更新于