Python: ошибка индексации только в flask rout.py, а не где-либо еще - PullRequest
0 голосов
/ 15 февраля 2019

Я использую os.walk (), чтобы получить пути к файлам из каталога.мой код работает нормально, когда я использую его в utils.py, но как только я помещаю его в функцию index () в rout.py, я получаю 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])

вывод: статический / img / menu / image_1.jpg

rout.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)

Я удалил неактуальный кодв rout.py, но сохранил комментарии, чтобы объяснить, почему я использую ['GET', 'POST']

, поэтому я предполагаю, что это проблема с flask ... Я также пытался превратить этот код вКласс и импортировать его из utils.py как класс, но это не сработало.Я также попытался просто импортировать список из колбы, которая также не работала.Каждый из них дал одну и ту же ошибку.

1 Ответ

0 голосов
/ 15 февраля 2019

Хорошо, поэтому возникло несколько проблем, которые вызывали эту проблему.

  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])

Надеюсь, это кому-нибудь поможет, если вам нужна доработка, дайте мне знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...