我有两件事要做:
在for row in reader
下,我有一大堆事情要做,我担心所有的事情都能正确执行。似乎有一些关于长指令块的迷信,所以我正在不知不觉地引导它。
我不知道怎样才能最好地晋级下一张唱片,甚至我必须这样做。当我达到一个错误条件时,该行被写入到一个丢弃文件中,所以我真的可以等到循环的“结束”。但我要怎么说“下一张唱片?”我是否必须在for row...
循环的末尾显式地生成next()
?
感谢您的指导。TC公司
with open('data.csv',rb) as f:
reader = csv.reader(f)
next(reader, None) # skip the header
for row in reader:
foo
foo
lots more foo
if bar1 == errorvalue1:
writediscard (row)
else:
if bar2 == errorvalue2:
writediscard (row)
else:
writegoodstufftothedatabase(data)
# in all cases, want to advance to the next record
请注意,我已经在上面def writediscard
和writegoodstufftothedatabase
。我可以处理向sqlitedb写入和提交写操作。这个该死的CSV迭代是另一个故事。在
代码应该执行得很好。对长指令块的“迷信”并不是因为担心某些东西无法执行,而是因为它很难阅读、理解、维护和修改。考虑将您的“foo”逻辑分解为定义的函数并调用它们。
在您的例子中,下一个记录逻辑发生在迭代器中} 跳过循环中的代码并返回到顶部,但这并不是构建代码的方式所必需的。
for row in reader:
。你不需要调用任何东西来获取下一条记录,你只需要确保在失败时不执行任何你不想执行的代码,这是对你的条件结构所做的。您可以使用^{相关问题 更多 >
编程相关推荐