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

如何将PDF下载至以表单名命名的子目录而非主应用同级目录

解决方案

首先引入Python标准库os处理目录与路径,修改后代码如下:

完整修改代码

# 代码顶部引入依赖
import os
import requests

# ----- 你原有其他逻辑保持不变 -----
pdf_link = form_number.find("a")
i += 1
print("Downloading file: ", i)

# 构造子目录名称
form_name = form_number.text.strip()
# 自动创建子目录,目录已存在时不报错
os.makedirs(form_name, exist_ok=True)

# 拼接符合要求的完整存储路径
pdf_file_name = f"{form_name} {form_year.text.strip()}.pdf"
full_save_path = os.path.join(form_name, pdf_file_name)

# 下载并保存文件
response = requests.get(pdf_link.get('href'))
# 使用with上下文管理器操作文件,自动处理资源释放
with open(full_save_path, 'wb') as pdf:
    pdf.write(response.content)

print("File ", i, " downloaded")

改动说明

  • 新增目录自动创建逻辑:自动生成以表单名称命名的子目录,无需手动提前创建
  • 跨平台兼容:使用os.path.join拼接路径,自动适配Windows、macOS、Linux不同系统的路径分隔符规则
  • 文件名格式匹配:将原代码中横杠分隔的文件名调整为空格分隔,完全符合你要求的Form W-2/Form W-2 2020路径格式
  • 优化文件操作:改用with语法管理文件写入,无需手动调用close(),异常场景下也不会出现文件句柄泄漏问题

可选优化

如果表单名称中包含/`:``*`等系统禁止的文件名字符,可增加字符替换逻辑,避免文件保存失败,示例:

form_name = form_number.text.strip().replace('/', '_').replace('\\', '_').replace(':', '_').replace('*', '_')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:00:06