我有一个python程序,它可以打开一个包含30000条记录的dbf文件,我想结束我的while循环,但出于某种原因,我的while循环保持打开状态
with DBF('data.DBF',recfactory=None,load =True) as table:
for row in table:
stono = (row[1][1])
payrollid = (row[15][1])
busdate = (row[2][1])
firstname = (row[13][1])
lastname = (row[14][1])
rows = [[stono,payrollid,busdate]]
print(rows)
try:
while True:
boolHasBlank = False
lastSsn = ssn
firstSsn = ssn
newPayrollId = payrollid.strip()
newStoNo = stono
Fname = firstname
Lname = lastname
while True and stono == newStoNo and payrollid == newPayrollId:
if ssn is not firstSsn:
boolHasBlank = True
else:
lastSsn = ssn
except EOFError as e:
print (e)
如果嵌套while循环启动,它将永远不会结束,因为它的条件不会更改条件中使用的任何变量。如果将“while”改为“if”,您可能会得到期望的结果。然后,您可以将该条件用作while循环条件
此外,您当前的代码在while循环中的每个迭代中的newPayrollId都是相同的。我假设try-except应该在for循环的“for-row-in-table”中
这也有点让人困惑
但是在嵌套的while循环中
这永远是错误的,所以
将是唯一运行的,但在firstSsn=ssn之前已经有lastSsn=ssn。在while条件下,您还有一个不必要的True。因此,我认为您的代码可以更改为:
当然,我没有足够的信息来了解你的代码到底是做什么的。也许有一个线程进程改变了我们看不到的snn值。作为旁注,在其他while循环中嵌套while循环通常是不好的做法。PEP20(Python的禅宗)指出,扁平比嵌套好
使用
break
来中断循环 例:这将提供以下输出:
相关问题 更多 >
编程相关推荐