Python ZipFile:如何避免目录为空时生成空压缩包?
解决方案
要实现仅当目标目录存在文件时才创建压缩包,只需在生成压缩包前添加目录文件存在性判断即可,具体修改如下:
import zipfile from zipfile import ZipFile, ZIP_DEFLATED import pathlib # STEP 3 - Create ZipFile zip_path = 'E:/GL/download_ceridian/ceridian.zip' directory_to_zip = 'E:/GL/download_ceridian' folder = pathlib.Path(directory_to_zip) # 筛选当前目录下的所有文件(排除子目录,若需包含非空子目录可调整逻辑) filelist = [file for file in folder.iterdir() if file.is_file()] # 仅当存在文件时才创建压缩包 if filelist: with ZipFile(zip_path, 'w', ZIP_DEFLATED) as zip: for file in filelist: zip.write(file, arcname=file.name) else: print("目标目录无文件,跳过压缩包生成")
关键修改说明:
- 用列表推导式筛选出目录下的实际文件(通过
is_file()排除子目录),避免因空目录导致的空压缩包; - 添加
if filelist:判断分支,只有当文件列表不为空时,才执行压缩包创建操作; - 若你需要包含非空的子目录(即只要目录下有内容,不管是文件还是非空子目录都生成压缩包),可将筛选逻辑改为:
# 判断目录下是否有任意内容(文件或目录) has_content = any(True for _ in folder.iterdir()) if has_content: # 执行压缩代码
内容的提问来源于stack exchange,提问作者Tye Mathews
相关产品推荐
相关产品推荐

