2017-03-09 55 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()