如何从另一个目录级别检索文件?

问题描述

在过去的几天里,我一直在尝试弄清楚如何在我的Python项目中处理FileNotFoundError。这是一个Flask应用程序,但是问题应该适用于类似的目录结构。

我的目录结构如下:

app/
    pdf_report.py
    files/
        icon.png
webapp/
    flask_app.py
    /templates

pdf_report.py文件具有如下功能

def generate_pdf():
    with open("files/icon.png") as file:
        return make_pdf()

问题是当我从webapp/flask_app.py调用函数时,该函数将不起作用:

from pdf_report import generate_pdf
    generate_pdf()

代码引发错误

FileNotFoundError:[错误2]没有这样的文件或目录:'files / icon.png'

很明显,这是因为Active Directory为webapp/,并且files/icon.png中没有webapp/文件路径。

我应该如何解决这个问题?

解决方法

您应该将绝对路径传递到pdf文件。

import os

def generate_pdf():
    working_directory = os.getcwd().replace('webapp','app')
    file_path = os.path.join(working_directory,'files/icon.png')
    with open(file_path) as file:
        return make_pdf()
,

尝试在配置文件或 init .py中添加app.config ['filepath'] ='absolute / path / to / files / dir' 然后执行以下操作:

def generate_pdf():
    with open(app.config['filepath']+'/icon.png') as file:
        return make_pdf()