我有一个列列表文件:
$ cat test
blah
blahblah
blah22
bluh
blih
blihihih
我只想删除blah
样的行。(相当于bashgrep -v blah
)这样blah
、blahblah
和blah22
就被删除了。你知道吗
到目前为止我有:
>>> f = open('test', 'rw+')
>>> line = f.readlines()
>>> for l in line:
... if l.find('blah') == -1:
... f.truncate(0)
... f.write(l)
...
>>> f.close()
我认为这会很好,但在运行这个之后,从测试文件中只剩下这一行:
$cat test
blihihih
为什么,这已经删除了blih
或bluh
?你知道吗
为了回答您的问题,您太频繁地截断文件。每次调用
f.truncate(0)
都会将文件大小重置为0。因此,只有最后一行blihihih
将继续存在。你知道吗如果您想一次性完成:
另外,您应该真正使用
with
:(这样就不需要写
f.close()
。阅读更多关于为什么使用with
here的信息。)我认为最好先打开文件,然后写入:
输出(测试中)
相关问题 更多 >
编程相关推荐