2017-03-09 56 views
1

我有一個腳本使用xlsxwriter將10個工作表保存到.xlsx。 當我試圖關閉工作,我得到一個錯誤:xlsxwriter在workbook.close()前捕獲一個錯誤

"UnicodeDecodeError: 'ascii' codec can't decode byte 0xea in position 28: ordinal not in range(128)". 

我試圖抓住錯誤時,我寫的線板,但沒有成功。因此,我的工作表完全沒有保存,我無法處理該行的異常情況。

這裏是我的代碼 -

def xlsx_writer(name, data): 
    worksheet1 = workbook.add_worksheet(name) 
    line_number = 0 
    for line in data: 
     try: 
      worksheet1.write_row(line_number, 0, line) 
     except UnicodeDecodeError: 
      line = [x.decode('utf-8') for x in line] 
      worksheet1.write_row(line_number, 0, line) 

我如何捕獲的錯誤而寫的每一行,而不是當我關閉工作簿?

回答

0

How can I catch the error while writing every line and not when I close the workbook?

總之,你不能。將非ASCII或UTF-8編碼數據寫入目標文件時發生此錯誤,並且在文件關閉之前不會發生此錯誤。

如果你只是想避免這個錯誤,那麼只需解碼()你的數據,然後將它傳遞到write()write_row()