当我比较应该相同的Workbook对象时,我得False
而不是True
。这是一个例子:
$ import openpyxl
$ w1 = openpyxl.load_workbook('Foo.xlsx')
$ w2 = openpyxl.load_workbook('Foo.xlsx')
$ w1 == w2
False
发生了什么?
奖金问题:有没有办法比较工作簿? (我正在为操作Excel的脚本编写单元测试。)
答案 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)