【问题标题】:How can I make python continuously check for an item in a text file如何让 python 连续检查文本文件中的项目
【发布时间】:2021-02-15 14:24:39
【问题描述】:

我有以下代码:


with open('file.txt', encoding="utf8") as inputFile:
    data = inputFile.readlines()
    inputFile.close()

for i, line in enumerate(data):
    if any([x in line for x in ['nl']]):
        with open("nl.txt", "w+") as nl:
            nl.write(line)
    if any([x in line for x in ['be']]):
        with open("be.txt", "w+") as be:
            be.write(line)
    if any([x in line for x in ['pl']]):
        with open("pl.txt", "w+") as pl:
            pl.write(line)
    if any([x in line for x in ['de']]):
        with open("de.txt", "w+") as de:
            de.write(line)

此代码搜索文本文件中的关键字,以及是否将整行写入文本文件。但由于某种原因,它在得到一个结果后停止。我怎样才能让它循环直到文件中的所有行都被检查过?

【问题讨论】:

  • 请提供示例输入文件和代码输出。

标签: python python-3.x text


【解决方案1】:

您在w+ 模式下打开文件会覆盖任何以前的内容,从而造成只找到一个结果的错觉。使用open 更改您的行,这样使用模式a+

with open('file.txt', encoding="utf8") as inputFile:
    data = inputFile.readlines()
    inputFile.close()

for i, line in enumerate(data):
    if any([x in line for x in ['nl']]):
        with open("nl.txt", "a+") as nl:
            nl.write(line)
    if any([x in line for x in ['be']]):
        with open("be.txt", "a+") as be:
            be.write(line)
    if any([x in line for x in ['pl']]):
        with open("pl.txt", "a+") as pl:
            pl.write(line)
    if any([x in line for x in ['de']]):
        with open("de.txt", "a+") as de:
            de.write(line)

或者您甚至可以在循环运行时保持文件打开,例如:

with open("nl.txt", "w+") as nl:
    for i, line in enumerate(data):
        # Other code here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多