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

Python如何按表格数据格式化文件名并下载至指定目录?

解决方案

你的问题核心不是原始字符串(r前缀)和format冲突,而是目标文件夹不存在时open函数无法创建文件,另外直接硬写路径也不够稳妥。以下是几种可靠的实现方式:

方法一:用os.path模块构建路径(推荐)

这个方法能自动适配不同操作系统的路径分隔符,还能确保目标目录存在:

import os

# 定义目标文件夹
target_dir = r'C:/Users/Me/Python/folder'
# 确保文件夹存在,不存在则自动创建(exist_ok=True避免重复创建报错)
os.makedirs(target_dir, exist_ok=True)

for r in range(2, ws.max_row+1):
    # 提取表格数据
    year = ws.cell(row=r, column=1).value
    country = ws.cell(row=r, column=2).value
    lang = ws.cell(row=r, column=3).value
    # 生成文件名
    filename = f"{year}_{country}_{lang}.pdf"
    # 拼接完整路径
    full_path = os.path.join(target_dir, filename)
    # 写入文件
    with open(full_path, "wb") as f:
        f.write(pdf_res.content)

方法二:直接拼接字符串(需确保目录存在)

如果不想用os.path,可以直接用字符串格式化,但必须先确认目标文件夹存在:

import os

target_dir = r'C:/Users/Me/Python/folder'
os.makedirs(target_dir, exist_ok=True)

for r in range(2, ws.max_row+1):
    full_path = r"{}/{}_{}_{}.pdf".format(
        target_dir,
        ws.cell(row=r, column=1).value,
        ws.cell(row=r, column=2).value,
        ws.cell(row=r, column=3).value
    )
    with open(full_path, "wb") as f:
        f.write(pdf_res.content)

为什么原代码运行失败?

原始字符串(r前缀)和format是可以兼容的,你之前的代码报错大概率是因为**C:/Users/Me/Python/folder这个目录不存在**——open函数只能创建新文件,无法自动创建不存在的上级目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:57:35