f= open('elk.in','r')
lines = f.readlines()
for line in lines:
if line.startswith('vkloff'):
p=lines.index(line)+1
#print(lines[p])
break
lines[p] = f'{string}n'
string=''
with open('elk.in','w') as out:
out.writelines(lines)
out.close()
在第[p]行中,如果我删除它下面的行,它就会被删除。那么它是如何工作的呢?
猜测一下你的意图。你想打开一个文件,找到一个以给定前缀开头的行,用其他东西替换它,然后写回文件吗?如果是这样的话,这里有一些错误
- 您正试图打开已打开的文件。你应该先关闭它
- 假设这是完整的代码,则在使用
string
之前不会对其进行定义 - 当使用
with
打开文件时,您不需要在之后关闭它
考虑到这些,你想要像这样的东西
with open('elk.in','r') as f:
lines = f.readlines()
for idx, line in enumerate(lines):
if line.startswith('vkloff'):
p = idx
break
lines[p] = f'{string}n'
with open('elk.in','w') as out:
out.writelines(lines)
但真正需要更多的信息来了解你在这里想要实现的目标。