2015-06-03 2 views
1

Я коротко перед тем, как закончить свой сценарий и попытаться обойти это.Как удалить пустую строку Excel после исключения цикла?

У меня есть сценарий, который помещает определенную информацию из массива (data) в строки Excel через цикл. data_loaded - это массив со строками сценария. Это выглядит следующим образом:

from get_comp_data import get_comp_data 
    from openpyxl import Workbook 
    wb = Workbook() 
    ws = wb.active 
      for z in range(len(data_loaded)): 
       try: 
        data = get_comp_data(data_loaded[z]) 
        print z 
        ws['A'+str(z+1)] = data[0] 
        ws['B'+str(z+1)] = data[1] 
        ws['C'+str(z+1)] = data[2] 
        ws['D'+str(z+1)] = data[3] 
        ws['E'+str(z+1)] = data[4] 
        ws['F'+str(z+1)] = data[5] 
        ws['G'+str(z+1)] = data[6] 
        ws['H'+str(z+1)] = data[7] 
        ws['I'+str(z+1)] = data[8] 
        ws['J'+str(z+1)] = data[9] 
        wb.save("test.xlsx") 
       except Exception: 
        pass 

Однако, иногда возникает исключение в случае get_comp_data получает ошибку. Каждый раз, когда возникает исключение, строка Excel пуста.

Как удалить или запретить создание этих строк?

ответ

0

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

Итерации по значениям индекса последовательности, а не элементам, в любом случае являются «непитоническими».

from string import ascii_uppercase 
from get_comp_data import get_comp_data 
from openpyxl import Workbook 

workbook = Workbook() 
worksheet = workbook.active 

# ... 

row_number = 1 
for item in data_loaded: 
    try: 
     data = get_comp_data(item) 
    except Exception: 
     pass # Intentionally ignored. 
    else: 
     for column_name, item in zip(ascii_uppercase, data): 
      worksheet[column_name + str(row_number)] = item 
     row_number += 1 
0

кладет линии данных = get_comp_data (data_loaded [г]) в Try/за исключением + продолжаться так:

try: 
    data = get_comp_data(data_loaded[z]) 
except : 
    continue 
+0

спасибо Anth0kuto. Однако линии все еще эмпирны. Я думаю, проблема в том, что z перескакивает также в случае исключения. Есть ли способ, когда z перескакивает, например. 5-7, что data_loaded [7] не помещается в строку 7, а в строку 6? –

Смежные вопросы