for循环列表中断并继续
for loop over list break and continue
要正确指定问题:对于造成的混淆,我深表歉意
对早早脱离循环有疑问。
我有文件夹 - 1995,1996 到 2014。每个文件夹有 xml 个文件。在某些 xml 文件中,条目 - MaxAmdLetterDate 是 None。
我想继续处理文件夹中的下一个文件,而不是现在使用 break ,程序执行转到下一个文件夹并在遇到中断时跳过该文件夹中的所有文件
这是代码
import xml.etree.ElementTree as ET
import os
for yrcnt in range(1995,2015):
old= old="./old/"+ str(yrcnt)
for dirpath, subdirs, files in os.walk(old): #folder name in which subfolder>files are present
print files
for filename in files:
if filename.endswith(".xml") == True:
fl=filename
print fl
print "-----Reading current file -------" + str(fl)
flnm=str(dirpath)+"/"+str(filename)
tree1 = ET.parse(flnm) #db on system
root1 = tree1.getroot()
for ch1 in root1.findall('Award'):
aid1 = ch1.find('AwardID').text
maxdate1=ch1.find('MaxAmdLetterDate').text
print "Max amd date : "+str(maxdate1)
if maxdate1==None:
break
感谢帮助。
原创POST:
我的 for 循环在遇到 break 时提前退出。任何补救措施?
files=[1,2,3,4,5]
for filename in files:
print filename
if filename==3:
break
o/p:
1
2
3
预计O/p
1
2
4
5
谢谢!
编辑:带有一些评论,例如 break 的预期功能。让我解释一下:我希望该函数类似于 range(0,5) ,我将其用作嵌套循环的一部分,我希望循环继续进行,而不是由于一个文件而退出。
这就是 break
的工作方式。如果你想遍历整个列表,只需删除 break
(或者如果你想对值做一些事情,使用 pass
作为占位符)。
values = [1, 2, 3, 4, 5]
for value in values:
if value == 3:
pass
print(value)
输出:
1
2
3
4
5
如果您只想跳过一个值,请使用 continue
关键字。
values = [1, 2, 3, 4, 5]
for value in values:
if value == 3:
continue
print(value)
输出:
1
2
4
5
Break
自动退出循环。如果您不想在文件名为 3 时打印文件名,请使用这样的 if
语句:
files=[1,2,3,4,5]
for filename in files:
if filename!=3:
print filename
这是结果:
1
2
4
5
要正确指定问题:对于造成的混淆,我深表歉意 对早早脱离循环有疑问。 我有文件夹 - 1995,1996 到 2014。每个文件夹有 xml 个文件。在某些 xml 文件中,条目 - MaxAmdLetterDate 是 None。 我想继续处理文件夹中的下一个文件,而不是现在使用 break ,程序执行转到下一个文件夹并在遇到中断时跳过该文件夹中的所有文件 这是代码
import xml.etree.ElementTree as ET
import os
for yrcnt in range(1995,2015):
old= old="./old/"+ str(yrcnt)
for dirpath, subdirs, files in os.walk(old): #folder name in which subfolder>files are present
print files
for filename in files:
if filename.endswith(".xml") == True:
fl=filename
print fl
print "-----Reading current file -------" + str(fl)
flnm=str(dirpath)+"/"+str(filename)
tree1 = ET.parse(flnm) #db on system
root1 = tree1.getroot()
for ch1 in root1.findall('Award'):
aid1 = ch1.find('AwardID').text
maxdate1=ch1.find('MaxAmdLetterDate').text
print "Max amd date : "+str(maxdate1)
if maxdate1==None:
break
感谢帮助。
原创POST: 我的 for 循环在遇到 break 时提前退出。任何补救措施?
files=[1,2,3,4,5]
for filename in files:
print filename
if filename==3:
break
o/p:
1
2
3
预计O/p
1
2
4
5
谢谢!
编辑:带有一些评论,例如 break 的预期功能。让我解释一下:我希望该函数类似于 range(0,5) ,我将其用作嵌套循环的一部分,我希望循环继续进行,而不是由于一个文件而退出。
这就是 break
的工作方式。如果你想遍历整个列表,只需删除 break
(或者如果你想对值做一些事情,使用 pass
作为占位符)。
values = [1, 2, 3, 4, 5]
for value in values:
if value == 3:
pass
print(value)
输出:
1
2
3
4
5
如果您只想跳过一个值,请使用 continue
关键字。
values = [1, 2, 3, 4, 5]
for value in values:
if value == 3:
continue
print(value)
输出:
1
2
4
5
Break
自动退出循环。如果您不想在文件名为 3 时打印文件名,请使用这样的 if
语句:
files=[1,2,3,4,5]
for filename in files:
if filename!=3:
print filename
这是结果:
1
2
4
5