Python:仅在烧瓶routes.py中出现索引错误,在其他任何地方都没有

时间:2019-02-15 01:53:35

标签: python flask

我正在使用os.walk()从目录中获取文件的路径。当我在utils.py中使用它时,我的代码可以正常工作,但是当我将其放在route.py中的index()函数中时,当尝试从列表中获取名称时,我得到了IndexError:list index超出范围。 >

utils.py

menu_image_list = []
for root, dirs, files in os.walk('static/img/menu/'):
    for filename in files:
        x = os.path.join(root, filename)
        menu_image_list.append(x)

print(menu_image_list[0])

输出:static / img / menu / image_1.jpg

routes.py

@app.route("/", methods=['GET', 'POST'])
def index():

    # Handling Twitter

    # Handling image file names
    menu_image_list = []
    for root, dirs, files in os.walk('static/img/menu/'):
        for filename in files:
            x = os.path.join(root, filename)
            menu_image_list.append(x)

    menu_image1 = menu_image_list[0]
    menu_image2 = menu_image_list[1]
    menu_image3 = menu_image_list[2]
    menu_image4 = menu_image_list[3]

    # Handling email contact form


    return render_template('index.html', image1=menu_image1, image2=menu_image2, image3=menu_image3, image4=menu_image4)

我已删除了route.py中不相关的代码,但保留了注释以解释为什么我使用['GET','POST']

所以我认为这是flask的问题...我也试图将这段代码转换为一个类,并将其从utils.py导入为一个类,但这没有用。我也尝试过仅从flask导入列表,这也没有用。他们每个人都犯了相同的错误。

1 个答案:

答案 0 :(得分:0)

好的,因此导致此问题的原因有很多。

  1. 我的项目布局不正确。如果您遇到此问题,请检查以下两个链接: http://flask.pocoo.org/docs/1.0/tutorial/layout/ https://www.youtube.com/watch?v=44PvX0Yv368

  2. 我使os.walk()的路径从先前编写的内容的父目录开始

2.5如果您尝试os.path.join尝试在os.walk()中使用的路径和文件名(os.walk()的结果)时尝试将这些路径添加到html,则可能会导致问题,因为是比您需要的html目录更高的目录(对不起,如果这对您造成困扰,对我来说也是如此)。出于某种原因,os.walk()希望查看的目录比html多,因此,与其重复使用os.walk(path)的路径,不如这样做:

menu_image_list = []
for root, dirs, files in os.walk('siamsite/static/img/menu/'):
    for filename in files:
        x = os.path.join('static/img/menu/', filename)
        menu_image_list.append(x)
return render_template('index.html', 
                       image1=menu_image_list[0], image2=menu_image_list[1],
                       image3=menu_image_list[2], image4=menu_image_list[3])

希望这对某人有帮助,如果您需要进一步的详细说明,请告诉我!