Django生成PDF时触发[WinError 2]系统找不到指定文件,求排查
解决WinError 2: 系统找不到指定文件的PDF生成问题
可能的原因及排查步骤:
路径错误:
先确认pdf_file_output的实际路径是否正确。Windows下相对路径容易出问题,建议打印绝对路径排查:print(os.path.abspath(pdf_file_output))对比打印出的路径和实际PDF文件的存储路径,看是否一致,注意有没有拼写错误、大小写问题(Windows路径不区分大小写,但特殊场景下可能出现识别异常)。另外路径里的空格、中文也可能导致识别问题,尽量用纯英文路径测试。
文件生成未完成:
这段代码是读取已生成的PDF,但如果PDF生成逻辑在这段代码之前没执行完,或者生成过程中出错导致文件未创建成功,os.path.exists可能出现误判(比如生成时临时创建了空文件又删除)。检查生成PDF的代码是否正常执行,有没有未捕获的异常。权限或系统限制:
即使文件存在,当前运行程序的用户可能没有读取权限。比如文件存放在C:\Program Files这类需要管理员权限的目录,而程序以普通用户启动,就会无法访问。可以手动右键点击文件,检查“安全”选项卡的权限设置,或者把文件移到普通目录(比如桌面)测试。检查逻辑漏洞:
把os.path.exists换成os.path.isfile,确保目标路径指向的是文件而非目录:if os.path.isfile(pdf_file_output): # 后续代码不变
用户提供的相关代码:
if os.path.exists(pdf_file_output): with open(pdf_file_output, 'rb') as fh: response = HttpResponse(fh.read(), content_type="application/pdf") response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(pdf_file_output) return response
内容的提问来源于stack exchange,提问作者Python
相关产品推荐
相关产品推荐

