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

如何将txt文件压缩为zip并批量写入多个指定目录

报错原因
  • 错误将ZipFile实例对象传入仅支持路径类参数的os.path.join()方法,触发类型不匹配报错
  • 仅全局创建了一次压缩包实例,未在每个目标目录下单独生成压缩文件
  • 变量名不统一,前文获取的目录列表变量为directories_list,循环中误用了未定义的folder_list
修正实现代码
import os
import zipfile

# 配置参数
source_txt_path = 'N:/Project/50813_Medicaid_UPL_DSH/NJ1/Data Files from CMS/UPL/Guidance_Document_Extract/_ticket5250_sandbox/guidancedocnotes.txt'
target_root_dir = 'N:/Project/50813_Medicaid_UPL_DSH/NJ1/Data Files from CMS/UPL/Guidance_Document_Extract/_ticket5250_sandbox/2021'

# 获取目标目录列表
directories_list = retrieve_file_paths(target_root_dir)

# 遍历每个目标目录生成压缩包
for target_folder in directories_list:
    # 拼接当前目录下的压缩包完整路径
    zip_save_path = os.path.join(target_folder, 'guidancedocnotes.zip')
    # 创建当前目录的压缩包
    with zipfile.ZipFile(zip_save_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        # 写入txt文件,arcname指定压缩包内的文件名,避免带入全路径目录结构
        zip_file.write(source_txt_path, arcname=os.path.basename(source_txt_path))
    print(f"压缩包已生成至:{zip_save_path}")
注意说明
  • 使用with语法管理ZipFile实例,无需手动关闭文件句柄,避免资源泄漏
  • arcname参数可控制压缩包内的文件名称,去掉原文件的全路径前缀,解压后直接得到txt文件
  • 若retrieve_file_paths返回的路径包含文件而非纯目录,可在遍历前增加if os.path.isdir(target_folder)判断过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:57:04