как избежать ошибки "нет такого файла" и обновить код - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь сделать это:

jsons = [json.load(open(f'this_folder/{folder}/data.json')) for folder in os.listdir('this_ folder')]

Но не все папки в this_folder содержат данные. json, и я получаю сообщение об ошибке:

FileNotFoundError: [Errno 2 ] Нет такого файла или каталога: 'this_folder / 3634575b59e / data. json'

Как избежать или игнорировать это сообщение? Спасибо !!!

Ответы [ 3 ]

1 голос
/ 25 мая 2020

Вы можете использовать try...except обозначение, например:

jsons = []
for folder in os.listdir('this_ folder'):
    try:
        jsons.append(json.load(open(f'this_folder/{folder}/data.json'))
    except FileNotFoundError:
        pass

Но я действительно рекомендую закрывать файлы после их открытия:

jsons = []
for folder in os.listdir('this_ folder'):
    try:
        json_file = open(f'this_folder/{folder}/data.json')
        jsons.append(json.load(json_file)
        json_file.close()
    except FileNotFoundError:
        pass
0 голосов
/ 25 мая 2020

Как указал ответ Anwarvi c, здесь следует использовать инструкцию try-except. Но вам также следует закрыть свой файл по очевидным причинам. Вы можете сделать это, используя следующий фрагмент кода:

jsons = []
for folder in os.listdir('this_ folder'):
try:
    with open(f'this_folder/{folder}/data.json') as json_file:jsons.append(json.load(json_file))
except FileNotFoundError:
    pass
0 голосов
/ 25 мая 2020

Возможно, вы можете использовать блок try catch:

jsons = []
for folder in os.listdir('this_ folder'):
    try:
        jsons.append(json.load(open(f'this_folder/{folder}/data.json'))
    except:
        #Do nothing

Извините, это не однострочник.

...