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
相关产品推荐
相关产品推荐

