Python OSError无法打开资源



这是我的文件结构:

main
|
| - generate.py
| - car.png

在generate.py文件中,我使用ReportLab库构建PDF文档,如下所示:

def generatePDF():
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
doc = SimpleDocTemplate(base_dir)
story = []
# ... adding paragraphs of text
car = [['Renault', Image('car.png'), 'Description']]
table = Table(car, colWidths=100, rowHeights=50)
story.append(table)
doc.build(story)

运行此代码将引发以下错误:

OSError at /car/
fileName='car.png' identity=[ImageReader@0x4563bb0 filename='car.png'] Cannot open resource "car.png"

为什么会这样?你能看出我哪里做错了吗?

如果我从表中删除图像,一切工作正常。

这不是一个核心Python错误,但它是由ReportLab引发的。错误提示ReportLab找不到car.png文件。这可能是由于当前目录不是您所期望的。如果您给出的文件名没有完整路径,则会在进程的当前工作目录中搜索该文件,而不是在Python文件的目录中搜索。你应该使用:

car = [['Renault', Image(os.path.join(base_dir, 'car.png')), 'Description']]