使用dublicate对象保存pickle或保存python formulas.excel.ExcelModel

2024-06-16 14:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的xls,我使用python中的formulas包解析它。由于加载和转换xls需要一些时间,我正在寻找保存formulas.excel.ExcelModel对象的方法。我尝试了pickle(以及json和klepto),但使用pickle时出现以下错误:

PicklingError: Can't pickle <function bypass at 0x0000021A8B6D8620>: it's not the same object as schedula.utils.dsp.bypass

因为有些零件有相似的名称。是否可以在pickle中设置一个标志或其他东西来忽略此错误?或者是否有其他方法保存此对象

下面是再现错误的代码:

import formulas
import xlsxwriter
import pickle

# generate a fake workbook
workbook = xlsxwriter.Workbook('./test.xlsx')
worksheet = workbook.add_worksheet()
testdata = (['a', 1000],
            ['b',   100])

#add values to rows and columns and ...  
worksheet.write(0, 0, testdata[0][0])
worksheet.write(0, 1, testdata[0][1])
worksheet.write(1, 0, testdata[1][0])
worksheet.write(1, 1, testdata[1][1])

#... finally sum them up
worksheet.write(2, 0, 'Total')
worksheet.write(2, 1, '=SUM(B1:B2)')
workbook.close()

# now load and convert the xls using formulas
xl = formulas.ExcelModel().loads("./test.xlsx").finish()

# and here the error occurs if I try to pickle it
with open('./model.pkl','wb') as f:
    pickle.dump(xl,f)

Tags: andthe对象方法import错误xlspickle