You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python ZipFile打包目录时误包含同名空压缩文件问题求助

问题解决方案

问题原因

你将生成的ceridian.zip直接存放在了要打包的目标目录E:/GL/download_ceridian中,代码遍历目录内容时,这个刚创建的空zip文件会被当作目录内的文件,被添加到压缩包中,最终导致压缩包里出现同名的空zip文件。

解决方案

以下两种方式均可解决问题,同时满足仅打包.csv文件的需求:

方案1:将zip文件输出到目标目录外

直接修改zip_path,把生成的压缩包放在要打包的目录之外,避免遍历目录时包含它:

from zipfile import ZipFile, ZIP_DEFLATED
import pathlib

# 将zip文件放在目标目录的上级目录
zip_path = 'E:/GL/ceridian.zip'
directory_to_zip = 'E:/GL/download_ceridian'

folder = pathlib.Path(directory_to_zip)

with ZipFile(zip_path, 'w', ZIP_DEFLATED) as zip:
    for file in folder.iterdir():
        if file.suffix == '.csv':
            zip.write(file, arcname=file.name)

方案2:遍历文件时过滤非目标文件

在遍历过程中添加判断,只处理.csv文件,同时排除当前正在生成的zip文件:

from zipfile import ZipFile, ZIP_DEFLATED
import pathlib

zip_path = 'E:/GL/download_ceridian/ceridian.zip'
directory_to_zip = 'E:/GL/download_ceridian'

folder = pathlib.Path(directory_to_zip)
zip_filename = pathlib.Path(zip_path).name

with ZipFile(zip_path, 'w', ZIP_DEFLATED) as zip:
    for file in folder.iterdir():
        # 仅打包csv文件,且排除当前生成的zip文件
        if file.suffix == '.csv' and file.name != zip_filename:
            zip.write(file, arcname=file.name)

效果验证

执行修改后的代码,生成的ceridian.zip中只会包含file1.csv和file2.csv两个文件,不会出现同名的空zip文件。

内容的提问来源于stack exchange,提问作者Tye Mathews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:07:11