os.path.join выдает ошибку 'тип аргумента должен быть str или байтами, а не TextIOWrapper' - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь открыть, а затем прочитать из json -файла (также позже сделайте то же самое и выгрузите некоторые json данные в тот же файл, кстати).

Я просто хотел использовать переменная для имени файла, поэтому мой код для этого выглядит так:

layout_file = 'layouts2.json'
try:
    filename = os.path.join(app.static_folder, layout_file)
    with open(filename) as layout_file:
        layouts = json.load(layout_file)
except:
    print("could not load layouts from config file")

Раньше мой код выглядел так и работал нормально:

try:
    filename = os.path.join(app.static_folder, 'layouts2.json')
    with open(filename) as layout_file:
        layouts = json.load(layout_file)
except:
    print("could not load layouts from config file")

Я получаю ошибку error 'type of argument must be str or bytes not TextIOWrapper'. Я действительно не понимаю, что делать сейчас, даже это должно быть решено довольно быстро, я думаю. Заранее спасибо!

1 Ответ

0 голосов
/ 06 мая 2020

Вы используете одну и ту же переменную layout_file как для имени файла, так и для дескриптора файла.

В написанном коде это должно работать нормально; однако, если вы сделаете это в al oop или аналогичном, вы можете получить путаницу между двумя значениями. (Если вы используете mypy, он тоже будет жаловаться.)

Использовать разные имена переменных?

layout_filename = 'layouts2.json'
try:
    filename = os.path.join(app.static_folder, layout_filename)
    with open(filename) as layout_fh:
        layouts = json.load(layout_fh)
except:
    print("could not load layouts from config file")
...