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

Python批量下载API附件时如何跳过已存在文件夹避免程序卡住

故障原因

原代码运行卡住是因为os.makedirs()默认行为是目标路径已存在时抛出FileExistsError,代码没有做前置校验或异常捕获,直接触发中断。另外原代码用字符串硬拼路径、反复切换工作目录的写法也容易触发额外的路径类错误。

修复后代码

在循环入口增加目标文件夹存在性校验,已存在则直接跳过当前条目进入下一轮循环,同时优化路径处理逻辑避免兼容问题,完整代码如下:

import pandas as pd
import os
import zipfile

parent_directory = "folderpath"
csv_file_dir = "myfilepath.csv"

user = "API_username"
key = "API_password"

# 统一处理父目录路径格式,避免拼接错误
if not parent_directory.endswith(os.sep):
    parent_directory += os.sep

bdr_data = pd.read_csv(csv_file_dir)
api_prefix = "… " + user + ":" + key + "…"

for _, row in bdr_data.iterrows():
    ref_num = str(row['Ref_Num'])
    target_folder = os.path.join(parent_directory, ref_num)
    # 核心逻辑:目标文件夹已存在则直接跳过
    if os.path.isdir(target_folder):
        continue
    # 仅对不存在的文件夹执行创建、下载操作
    os.makedirs(target_folder)
    save_path = os.path.join(target_folder, "attachments.zip")
    download_cmd = f"{api_prefix}{row['url_attachment']} -o {save_path}"
    os.system(download_cmd)
修改说明
  • 新增前置校验:通过os.path.isdir()直接判断目标路径是否为已存在的目录,命中则执行continue跳过后续所有操作,进入下一条数据处理
  • 替换原字符串硬拼接路径的写法为os.path.join(),自动适配不同操作系统的路径分隔符,避免漏写斜杠导致的路径错误
  • 移除原代码中反复os.chdir()切换工作目录的逻辑,直接在下载命令中指定附件保存的完整路径,减少目录切换带来的异常风险
  • 统一处理父目录的末尾分隔符,兼容用户输入的不同路径格式

可选优化:如果需要支持文件夹存在但附件下载不全的场景,可以把判断条件改为校验目标文件夹下是否存在完整的attachments.zip文件,而非判断文件夹存在就跳过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:36:27