简单嵌套for循环无法正常工作

ado*_*tyd 5 python file-io for-loop

我在这里看不到问题,这让我感到疯狂.我正在循环浏览2个文本文件.每个文件中的某些行匹配,有些则不匹配.我正在做的是循环file1.对于该文件中的每一行,循环遍历file2并比较每个元素以查看它们是否相同.发生的事情是我的循环在第一次循环通过file1后停止.这是我的代码:

while f < 50:
    for line in file1:
        for name in file2:
            if name == line:
                print 'a match was found'
    f+=1
Run Code Online (Sandbox Code Playgroud)

while循环来自其他地方,但它工作正常.我只是把它包含在上下文中.问题是file1只给我第一行,将它与file2中的所有'名称'进行比较然后停止而不是重复file1中下一行的进程.我错过了一些明显的东西吗?

编辑:如果我在第一个for循环之后放入一个print语句并注释掉另一个for循环,它将遍历整个第一个文件

Mar*_*ers 10

您无法循环浏览文件,然后再次遍历同一文件而无需开始.

重新打开file2,调用.seek(0)file2或将所有行加载到列表中,然后循环遍历.

在您的特定情况下,使用set名称可能是最快的:

names = set(name.strip() for name in file2)
while f < 50:
    for line in file1:
        if line.strip() in names:
            f += 1
Run Code Online (Sandbox Code Playgroud)

您可以对file1中的行执行相同操作并执行集合交集,前提是行在file1和file2中都是唯一的.