比较openpyxl工作簿

时间:2014-07-24 09:40:42

标签: python-3.x openpyxl

当我比较应该相同的Workbook对象时,我得False而不是True。这是一个例子:

$ import openpyxl
$ w1 = openpyxl.load_workbook('Foo.xlsx')
$ w2 = openpyxl.load_workbook('Foo.xlsx')
$ w1 == w2
False

发生了什么?

奖金问题:有没有办法比较工作簿? (我正在为操作Excel的脚本编写单元测试。)

1 个答案:

答案 0 :(得分:4)

当你调用“load_workbook”时,它会创建一个openpyxl工作簿对象的新实例。该变量指向存储该对象的内存中的位置。

当你有python将w1与w2进行比较时,它只能比较对内存位置的引用。只需键入变量名即可在空闲状态下看到内存地址。

>>> wb1 = load_workbook('master.xlsx')
>>> wb2 = load_workbook('master.xlsx')
>>> wb1 == wb2
False
>>> wb1
<openpyxl.workbook.workbook.Workbook object at 0x03ED3B50>
>>> wb2
<openpyxl.workbook.workbook.Workbook object at 0x04AD7E30>

如果要验证一个工作簿是否与另一个工作簿相同,则需要编写自己的代码,以深入了解每个对象。一种方法是使用哈希。 (见:https://stackoverflow.com/a/16876405/2535649