我正在尝试创建一个函数,当它在文件中找到一些文本时会写一行。 示例:它在.txt文件中找到“hello”,然后写入“嗨!”在以下行中。 还有其他东西,我希望它写“嗨!” 不是第一次它找到“hello”但是第二次。 这是我一直在尝试的,但我不知道这个想法是否正确。有帮助吗?
def line_replace(namefilein):
print namefilein
filein=open(namefilein, "rw")
tag="intro"
filein.read()
for line in filein:
if tag=="second" or tag=="coord":
try:
filein.write("\n\n %s" %(text-to-be-added))
print line
except:
if tag=="coord":
tag="end"
else:
tag="coord"
if " text-to-find" in line:
if tag=="intro":
tag="first"
elif tag=="first":
tag="second"
filein.close()
答案 0 :(得分:0)
您可以使用此代码:
def line_replace(namefilein):
new_content = ''
first_time = False
with open(namefilein, 'r') as f:
for line in f:
new_content += line
if 'hello' in line:
if first_time:
new_content += 'Hi!' + '\n'
else:
first_time = True
with open(namefilein, 'w') as f:
f.write(new_content)
看看我使用的是with
语句,在Python中是一个上下文管理器,所以这意味着,在这种情况下,当代码块被执行时,文件将自动关闭。
假设您有一个文件my_file.txt
,其内容为:
hello
friend
this
is
hello
让我们说你的文件与包含你代码的python文件在同一个目录中,所以调用:
line_replace('my_file.txt')
将产生以下输出:
hello
friend
hello
Hi!
is