gpt4 book ai didi

python - 从文件中读取行,然后仅将那些不包含特定短语的行写入文件

转载 作者:行者123 更新时间:2023-11-30 22:01:38 25 4
gpt4 key购买 nike

我有一个列列表文件:

$ cat test
blah
blahblah
blah22
bluh
blih
blihihih

我只想删除 blah类似的线条。 (相当于 bash grep -v blah 。)因此 blah , blahblahblah22已被删除。

到目前为止我有这个:

>>> 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

怎么,这已经删除了blihbluh

最佳答案

How come, this has removed blih or bluh?

为了回答您的问题,您过于频繁地截断文件。每次调用 f.truncate(0) 都会将文件大小重置为 0。因此,只有最后一行 blihihih 会保留下来。

如果你想一次性完成:

f = open('test.txt', 'r+')
lines = f.readlines()
f.seek(0)
for line in lines:
if line.find('blah') < 0:
f.write(line)
f.truncate()
f.close()

此外,您确实应该使用with:

with open('test.txt', 'r+') as f:
lines = f.readlines()
f.seek(0)
for line in lines:
if line.find('blah') < 0:
f.write(line)
f.truncate()

(那么您就不需要编写 f.close() 了。例如,阅读有关为什么使用 with here 的更多信息。)

关于python - 从文件中读取行,然后仅将那些不包含特定短语的行写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53991711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com