我有一个list
和一个dict
。
一旦我进入嵌套的for
循环,第一个for
循环就不会继续迭代这些值。这只允许我迭代一次,无论我的if
语句是否成功。
for OldRecord in StripOldList:
OldSplitRec = OldRecord.split('_')
value1 = OldSplitRec[1]
value2 = OldSplitRec[2]
value3 = OldSplitRec[3]
value3 = OldSplitRec[4]
value3 = OldSplitRec[5]
diffdict = {}
for SomeRec in DiffSplitText:
key1, key2, key3, key4, key5= SomeRec.strip().split('_')
FinalLabel = key1+"_"+key2+"_"+key3+"_"+key4+"_"key5+"_"+key6
diffdict[key1,key2,key3,key4,key5.strip()] = FinalLabel
IsNewEdition = True
IsNewVersion = True
IsNewFileType = True
if (value1 == key1 and value2 == key2):
IsNewFileType = False
if (value3 >= key3):
IsNewEdition = False
if (value5 >= key5):
IsNewVersion = False
if (IsNewFileType == True):
print "No Match"
elif (IsNewEdiion == True):
print "Found new edition"
link1.write(SomeRec)
elif (IsNewVersion == True):
print "Found new version"
link2.write(SomeRec)
然后,我将value1
与key1
或value5
与key6
进行比较。我的if
语句有效,但只执行一次,所以这是我唯一关注的部分。
它的文件示例如下:
Ex_299_Jabba_1993_09_20150805
所以如果旧列表有:
Ex_299_Jabba_1993_09_20130805
Ex_298_Jabba_1993_09_20130805
Ex_297_Jabba_1993_09_20130805
并且新字典有:
Ex_299_Jabba_1993_09_20140805
Ex_298_Jabba_1994_09_20130805
Ex_297_Jabba_1993_09_20130805
它应该识别字典中更新的文件名并将它们写入正确的位置(用**
强调)。
Ex_299_Jabba_1993_09_**20140805**
Ex_298_Jabba_**1994**_09_20130805
答案 0 :(得分:0)
来自你的评论:
DiffSplitText只是从
中提取文件名的文本文件
这就是问题:如果DiffSplitText
是file
对象,那么它就是一个迭代器。您的嵌套循环
for SomeRec in DiffSplitText:
迭代文件中的所有行,但在第一次迭代后,that file iterator is exhausted!
如果要再次读取行,则必须在外循环的每次迭代中使用DiffSplitText.seek(0)
重置迭代器。