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

将文件夹内文件压缩至同目录时Python代码陷入无限循环的问题

问题原因

你把生成的test.zip放在了要压缩的目标文件夹里,os.walk遍历目录时会把这个刚创建的zip文件也扫进去,代码接着会把它添加到压缩包中——这个写入操作会修改zip文件,导致os.walk反复检测到该文件,最终陷入无限循环。

另外你的路径字符串存在隐患:Windows路径里的\U是转义序列,直接写会触发语法错误,得用原始字符串(路径前加r)或者双反斜杠。

修复后的代码
import os as __os
import zipfile

def zipdir(path, ziph, exclude_file):
    for root, dirs, files in __os.walk(path):
        for file in files:
            # 跳过要生成的压缩包文件,避免循环
            if file == exclude_file:
                continue
            print(file)
            ziph.write(__os.path.join(root, file))

if __name__ == '__main__':
    zip_name = 'test.zip'
    # 用原始字符串处理Windows路径,避免转义问题
    working_directory = r"C:\Users\Admin\Downloads\gaz"
    archive_name = __os.path.join(working_directory, zip_name)
    # 若之前存在同名压缩包,先删除(可选,避免重复写入)
    if __os.path.exists(archive_name):
        __os.remove(archive_name)
    with zipfile.ZipFile(archive_name, 'w', zipfile.ZIP_DEFLATED) as zipf:
        zipdir(working_directory, zipf, zip_name)
关键改动说明
  • 给zipdir函数添加exclude_file参数,遍历文件时跳过要生成的压缩包,从根源避免循环。
  • 把路径改成原始字符串,解决Windows路径的转义问题。
  • 新增删除已有同名压缩包的逻辑(可选),防止旧文件干扰新压缩包生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:01:20