如何让python连续检查文本文件中的项目
我有以下代码:如何让python连续检查文本文件中的项目,python,python-3.x,text,Python,Python 3.x,Text,我有以下代码: 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+&qu
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)
这段代码搜索文本文件中的关键字,以及是否将整行写入文本文件。但由于某种原因,它在得到一个结果后停止。如何使其循环,直到文件中的所有行都已检查完毕?您在模式
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
请提供示例输入文件和代码输出。谢谢!“a+”对我有用!