Python 从文件中删除当前行

Python 从文件中删除当前行,python,python-3.x,Python,Python 3.x,考虑具有以下行的文件: remove keep remove 是否可以在迭代文件行时删除当前行 for word in file: if word != "keep": remove_line_from_file 最后,文件应该正好与单词keep对应。 我知道我可以用剩下的单词创建一个文件,但我希望保留相同的文件。不,但您可以事先提取文件的所有内容,修改文本,然后将其重写回文件: with open('file.txt','r') as f:

考虑具有以下行的文件:

remove   
keep
remove
是否可以在迭代文件行时删除当前行

for word in file:
    if word != "keep":
        remove_line_from_file
最后,文件应该正好与单词keep对应。

我知道我可以用剩下的单词创建一个文件,但我希望保留相同的文件。

不,但您可以事先提取文件的所有内容,
修改文本,然后将其重写回文件:

with open('file.txt','r') as f:
    lines = f.readlines()

with open('file.txt','w') as f:
    f.write(''.join([ln for ln in lines if 'keep' in ln])) # Writes all the lines back to file.txt that has the word `keep` in them
with fileinput.input(filename, inplace=True) as lines:
    for line in lines:
        if line == 'keep':
            print(line,)

Python有一个很好的库,名为,它允许您在原地修改文件。您可以将要保留的内容打印回文件:

with open('file.txt','r') as f:
    lines = f.readlines()

with open('file.txt','w') as f:
    f.write(''.join([ln for ln in lines if 'keep' in ln])) # Writes all the lines back to file.txt that has the word `keep` in them
with fileinput.input(filename, inplace=True) as lines:
    for line in lines:
        if line == 'keep':
            print(line,)

保留文件与删除行覆盖文件不一样吗?读取文件时不能修改文件。将要保留的内容保存在列表中,然后在最后重写文件。@Barmar Python有一个用于就地编辑的库函数:open('text.txt',r+')为f:line='x'read\u ptr=0 previos\u write\u ptr=0 write\u ptr=0,而line:line=f.readline()打印(line)read_ptr=f.tell()if line.strip()=“keep”:f.seek(write_ptr)f.write(line)write_ptr=f.tell()f.seek(read_ptr)f.seek(write_ptr)f.truncate()如果文件是100 GB怎么办?它是一个
txt
文件吗?它有区别吗,我认为python可以处理100gb的txt文件。你的机器有多少内存
readlines
将尝试将整个文件读入内存,您将得到一个
MemoryError