【发布时间】:2014-07-02 15:31:34
【问题描述】:
我试图了解这是否是 xlrd mod 中的正常行为,或者我是否在滥用某些东西。代码如下:
import xlrd
workbook = xlrd.open_workbook('exceptions v2.xlsm')
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows - 1
curr_row = -1
data = []
print 'begin loop'
while curr_row < num_rows:
curr_row += 1
row = worksheet.row(curr_row)
print row
data.append(row)
print 'out of loop'
当我运行脚本时,它会打印两次begin loop 和out of loop 以及电子表格中的所有数据。所以换句话说,这个while循环运行了两次然后停止。我在打印out of loop 之后抛出了raise SystemExit,脚本在我本来可以例外的地方停止了。
另一个想法也是,最终用途是通过将 excel 中的每一行附加到列表中来在 python 中创建一个列表(我在这里称之为数据),我注意到我的列表中没有重复,即使我看到打印语句运行两次。
【问题讨论】:
-
这段代码是在函数中调用还是整个脚本?因为如果这是整个脚本,似乎没有理由让它打印两次打印语句。如果它在一个函数中,那么为什么你没有双倍数据是有道理的,因为数据列表在循环运行之间被重置。
-
我尝试了两者并得到相同的结果。但是,我将它用作实际程序底部的脚本,而不是在新文件中执行。当我打开一个新文件并对其进行测试时,一切正常。但是很好地观察正在重置的列表,这很有帮助。显然我的程序中一定有一些东西要经历两次,我刚刚挂断了 xrld 因为我对那个 mod 不是很熟悉。
标签: loops python-2.7 xlrd