我有一个基于MySQLdb游标的while循环,我需要根据if语句中的某些条件移动到下一个迭代。清理后的代码如下所示:
row = cur.fetchone()
while row is not None:
unique_id = row[0]
mac = row[1]
url = row[2]
location = old_path + unique_id
os.chdir(location)
file_count = 0
for file in os.listdir(location):
if file.startswith('phone.') and file.endswith('.cfg'):
file_count = file_count + 1
if file_count != 1:
userprompt = 'Multiple phone.MAC.RANDOM.cfg files detected continue?'
cont = query_yes_no(userprompt) # prompt user on what to do next - abort or continue
if cont == False:
debugmsg = 'User requested abort - aborting'
print debugmsg
logger.info(debugmsg)
sys.exit()
elif cont == True:
debugmsg = 'Moving to next on user request'
logger.info(debugmsg)
continue
此代码的行为与预期不符。运行时,如果它遇到与file_count !=1
条件匹配的目录,则循环似乎再次运行而不会前进到下一行。除非我误解了continue
的使用,否则我认为它应该有效地退出循环的迭代并移动到下一行。
我错过了什么?
答案 0 :(得分:2)
而不是继续'你需要获取下一行: row = cur.fetchone()
答案 1 :(得分:1)
你是正确的continue
将转移到下一次迭代。
但是,您不会在任何迭代中修改任何内容。
您row is not None
中的陈述while
永远不会发生变化。它要么总是真的,要么总是假的。
你可能想做这样的事情:
while cur.fetchone() is not None:
#your code
或者更好:
while cur.fetchone():
#your code