Python:为什么我的循环不迭代?

标签 python loops

我有一段简单的 python 代码可以打开两个文件,并循环遍历一个文件中的每个字符串,在另一个文件中查找匹配的字符串(或其中的一部分)。如果找到它,它应该将该行写入文件。由于某种原因,它没有迭代。这是我的代码:

out = open("outputfile.txt", "w")
with open("inputfile1.txt", "r") as f:
    with open("inputfle2.txt", "r") as map:
        for line in f:
            for mline in map:
                if line[0:6] in mline:
                    out.write(line)

由于某种原因,生成的输出文件仅包含一行。我已经检查了该行并且它是正确的,所以代码正在执行我想要的操作但是由于某种原因循环没有遍历这两个文件。我知道有一个明显的解决方案,但数小时的搜索和摆弄我的代码没有产生任何结果。

最佳答案

line 到达文件 f 的第二行时,mline 已经读取了 map 的所有行 并耗尽了发电机。

您需要缓存 map 的内容:

out = open("outputfile.txt", "w")

with open("inputfle2.txt", "r") as map:
    map_lines = map.readlines()

with open("inputfile1.txt", "r") as f:
    for line in f:
        for mline in map_lines:
            if line[0:6] in mline:
                out.write(line)

关于Python:为什么我的循环不迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048842/

相关文章:

Python:重写具有元组的文本文件

python - 为什么在 C++ 中从 stdin 读取行比 Python 慢得多?

Ruby 嵌套循环

PHP - 错误的字母循环

python - 在 python 中,是否可以在删除图像中的线条时阻止文本的像素?

Python 三元运算符和 else 中的赋值

python - 在 Python 中根据空间拆分单个字典键和值

c - 繁忙等待循环的可变性能?

mysql - 循环光标以匹配字段

list - 是否可以在同一个剧本(Ansible)中循环进入两个不同的列表?