#python #exception
Вопрос:
У меня есть цикл for, в котором я использую ключ API для возврата некоторых значений в CSV. Я хочу, чтобы цикл возвращал пустую строку каждый раз, когда возникает ошибка, а не взлом кода. Я знаю, что мне нужно использовать continue
, но не знаю, как вставить пустую строку для каждого indexError
, что я получаю.
Я написал вызываемую функцию get_data
, которая возвращает текст ответа из API. Поэтому, используя это, я пытаюсь запустить вот что для входного файла df
d = [] try: for i in range(len(df)): output = df.loc[i,"column_1"] d.append(get_data(output)) lat = pd.DataFrame(d) lat_lon= lat.apply(pd.Series) f = open('results.csv','w') lat_lon.to_csv('results.csv') except IndexError: print('ERROR at index {}: {!r}'.format(i, address))
Я хочу, чтобы выходной csv-файл results.csv
оставлял пустую строку каждый раз, когда indexError
Ответ №1:
try/except
нужно быть внутри петли. В противном случае вы прерываете весь цикл при возникновении исключения.
Кроме того, вы не должны записывать CSV-файл каждый раз в цикле. Напишите его в конце с полным содержанием d
.
d = [] for i in range(len(df)): try: output = df.loc[i,"column_1"] d.append(get_data(output)) except IndexError: print('ERROR at index {}: {!r}'.format(i, address)) d.append([default row goes here]) lat = pd.DataFrame(d) lat_lon= lat.apply(pd.Series) f = open('results.csv','w') lat_lon.to_csv('results.csv')
Комментарии:
1. Спасибо! Но смущен тем, что
d.append([default row goes here])
делает2. Я не знаю, сколько элементов должно быть в списке. Поэтому я просто поместил это в качестве заполнителя, вы можете заменить его списком, содержащим нужное количество пустых строк.
3. Ааа, попался! Спасибо, это было очень полезно