Python 熊猫有时会写入空的或损坏的文件

Python 熊猫有时会写入空的或损坏的文件,python,excel,python-2.7,pandas,Python,Excel,Python 2.7,Pandas,我已经使用熊猫一段时间了,我认为它是一个很棒的工具。我制作了一个程序,从用户收集的一些数据生成一些excel文件。最终用户已经测试和使用了6个月;它直到昨天才失败,当时它生成了一个损坏的excel文件。当我用文本编辑器打开它时,它是完全空白的。生成此文件的代码如下所示: escritor = pandas.ExcelWriter(direccion, engine='xlsxwriter') listaTotal.to_excel(escritor, index

我已经使用熊猫一段时间了,我认为它是一个很棒的工具。我制作了一个程序,从用户收集的一些数据生成一些excel文件。最终用户已经测试和使用了6个月;它直到昨天才失败,当时它生成了一个损坏的excel文件。当我用文本编辑器打开它时,它是完全空白的。生成此文件的代码如下所示:

        escritor = pandas.ExcelWriter(direccion, engine='xlsxwriter')
        listaTotal.to_excel(escritor, index = False)
        escritor.save()
以及:

第二个代码片段还为“xlsxwriter”使用了一些格式选项,例如:

        format = workbook.add_format()
        format.set_font_size(9)
        format.set_font_name('Sans Serif 12cpi')
        format.set_border()
        format.set_text_wrap()
这个错误发生了两次;大约一个月前和昨天。我不能重复这个错误,我不知道发生了什么。这里还有回溯,它显示了程序读取文件时出现的问题,但该文件是由之前发布的代码生成的:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:\Users\WINNER\Documents\Visual Studio 2013\Projects\PythonApplication4\PythonApplication4\PythonApplication4.py", line 792, in botonGenerarPedido
    self.generarPedido()
  File "C:\Users\WINNER\Documents\Visual Studio 2013\Projects\PythonApplication4\PythonApplication4\PythonApplication4.py", line 904, in generarPedido
    self.generarVentasDia()
  File "C:\Users\WINNER\Documents\Visual Studio 2013\Projects\PythonApplication4\PythonApplication4\PythonApplication4.py", line 927, in generarVentasDia
    listaTotal = pandas.io.excel.read_excel(direccion)
  File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 151, in read_excel
    return ExcelFile(io, engine=engine).parse(sheetname=sheetname, **kwds)
  File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 188, in __init__
    self.book = xlrd.open_workbook(io)
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 435, in open_workbook
    ragged_rows=ragged_rows,
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 91, in open_workbook_xls
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 1230, in getbof
    bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 1224, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\x00\x00\x00\x00\x00\x00\x00\x00'

根据您对python的调用方式,它有时关闭得太快,无法刷新尚未关闭的文件。在写入文件后关闭所有文件,看看是否解决了问题您是说pandas将空字节行写入了文件?@alexis这些文件通常是关闭的,如果其中一些文件被打开,则错误不同,它是“IOError”,我只是在打开其中一个文件后对其进行了测试。我一直在自己测试,但我不能得到同样的错误。感谢您的评论。@PadraicCunningham基本上,它编写了一个扩展名为.xlsx的文件,当我试图用excel打开它时,有一个警告窗口告诉我该文件无效,当我用一个简单的文本编辑器打开它时,什么都没有,完全是空白的。
ExcelWriter
支持Python的
语法。您应该将
语法一起使用,因为它将始终保证正确写入和关闭文件。
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:\Users\WINNER\Documents\Visual Studio 2013\Projects\PythonApplication4\PythonApplication4\PythonApplication4.py", line 792, in botonGenerarPedido
    self.generarPedido()
  File "C:\Users\WINNER\Documents\Visual Studio 2013\Projects\PythonApplication4\PythonApplication4\PythonApplication4.py", line 904, in generarPedido
    self.generarVentasDia()
  File "C:\Users\WINNER\Documents\Visual Studio 2013\Projects\PythonApplication4\PythonApplication4\PythonApplication4.py", line 927, in generarVentasDia
    listaTotal = pandas.io.excel.read_excel(direccion)
  File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 151, in read_excel
    return ExcelFile(io, engine=engine).parse(sheetname=sheetname, **kwds)
  File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 188, in __init__
    self.book = xlrd.open_workbook(io)
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 435, in open_workbook
    ragged_rows=ragged_rows,
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 91, in open_workbook_xls
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 1230, in getbof
    bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  File "C:\Python27\lib\site-packages\xlrd\book.py", line 1224, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\x00\x00\x00\x00\x00\x00\x00\x00'