如何在Python中从文件中删除行
3 个回答
-1
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个功能时,发现它并没有按照预期的方式工作。这时候,查看一些技术论坛,比如StackOverflow,就能找到很多其他人遇到类似问题的讨论。
在这些讨论中,大家会分享他们的经验,提供解决方案,或者解释为什么会出现这样的情况。这些信息对于新手来说非常有帮助,因为它们可以帮助我们理解问题的根源,并找到解决办法。
总之,编程的学习过程充满了挑战,但通过查阅相关的讨论和资料,我们可以逐步克服这些困难,提升自己的技能。
import fileinput
for line in fileinput.input('f',inplace =1):
line = line.strip()
if not '2' in line:
print line
2
这段代码的意思是……
首先,它会执行一些操作,然后根据条件判断来决定接下来要做什么。代码中有一些变量,它们用来存储信息,比如数字或者文本。接着,代码会通过循环来重复某些步骤,直到满足特定的条件为止。
最后,代码会输出结果,可能是显示在屏幕上,或者保存到文件里。这些步骤结合在一起,形成了一个完整的程序,帮助我们完成特定的任务。
总的来说,这段代码就是在告诉计算机如何一步一步地完成某个工作。
with open('f', 'r+') as f:
data = ''.join(filter(lambda l: '2' not in l.strip().split(' '), f))
f.seek(0)
f.truncate(0)
f.write(data)
5
当你想要编辑一个文件时,通常的做法是先创建一个新的文件,里面放上正确的数据,然后把这个新文件改名为原来的文件名。这就是很多专业程序,比如你的文本编辑器,可能会采用的方式。(有些文本编辑器甚至会做一些更复杂的事情,但我们就不深入讨论了。)这样做的原因是,在很多文件系统中,重命名操作是可以保证完整性的,也就是说在任何情况下,你都不会遇到原文件损坏的问题。
这就会导致类似下面的代码:
with open(orig_file) as f, open(working_file, "w") as working:
# ^^^ 2.7+ form, 2.5+ use contextlib.nested
for line in f:
if '2' not in line: # Is this exactly the criterion you want?
# What if a line was "12 5"?
working.write(line)
os.rename(working_file, orig_file)
你可能会想用 orig_file + '~'
或者 tempfile
模块来生成这个工作文件。