python--将当前目录下同一类型的文件打包成压缩包

使用场景:当批量产出同一类型的文件时,可以使用如下代码将所有文件移动到目标目录,并打包成压缩包:

import shutil
import glob
import os
# ===========================================================================
def remover(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path) or os.path.islink(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))
# ===========================================================================
output_folder_name = 'folder_name'
copy = False
over_write_folder = True
# ===========================================================================
if os.path.exists(output_folder_name) and over_write_folder:
    remover(output_folder_name)
    
if not os.path.exists(output_folder_name):
    # 开文件夹
    os.makedirs(output_folder_name)
    # Copy 当前目录下的目标文件
    file_names = glob.glob("*.png") + glob.glob("*.xlsx")
    for file_name in file_names:
        if copy:
            shutil.copy(os.path.join('.', file_name), output_folder_name)
        else:
            shutil.move(os.path.join('.', file_name), output_folder_name)
    shutil.make_archive(f'{
      
      output_folder_name}', 'zip', output_folder_name)
else:
    print("改一下output_folder_name哈!")

知识点积累:

  • shutil模块:st+util,shell工具的意思。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。
    • shutil.rmtree:删除目录/文件夹;
    • shutil.move(source,destination):移动文件,source是文件,destination可以是文件也可以是目录;
    • shutil.copy(source,destination):拷贝文件,source是文件,destination可以是文件也可以是目录;
    • shutil.make_archive(base_name, format, base_dir):base_name是创建的目标文件名,format是压缩包格式后缀:zip、tar、bztar、gztar,base_dir是开始打包的路径;
  • glob模块:可根据 Unix 终端所用规则找出所有匹配特定模式的路径名,但会按不确定的顺序返回结果。
    • glob.glob(reg):reg为正则表达式,可以直接按文件类型筛选,返回list;
  • os模块:包含普遍的操作系统功能。
    • os.path.isfile(path):判断path是否为文件;
    • os.path.islink(path):判断path是否为快捷方式;
    • os.path.isdir(path):判断path是否为目录;
    • os.path.exists(path):判断path是否存在;
    • os.path.join(pa,pb,pc):连接规则参考https://blog.csdn.net/qq_30815237/article/details/87903364;
    • os.remove(path):删除文件;
    • os.makedirs(folder_name):在当前目录下创建文件夹/子目录;

猜你喜欢

转载自blog.csdn.net/zyl_wjl_1413/article/details/125574418