如何在Python中删除文本文件中的行?

alx*_*lxg 7 python io

我正在尝试创建一个代码来重写.txt文件中的特定行.我可以写在我想要的行,但我不能删除行上的前一个文本.

这是我的代码:(
我正在尝试一些事情)

def writeline(file,n_line, text):
    f=open(file,'r+')
    count=0
    for line in f:
        count=count+1
        if count==n_line :
            f.write(line.replace(str(line),text))
            #f.write('\r'+text)
Run Code Online (Sandbox Code Playgroud)

您可以使用此代码制作测试文件以进行测试:

with open('writetest.txt','w') as f:
    f.write('1 \n2 \n3 \n4 \n5')

writeline('writetest.txt',4,'This is the fourth line')
Run Code Online (Sandbox Code Playgroud)

编辑:由于某些原因,如果我使用'if count == 5:'代码编译好(即使它不删除前一个文本),但如果我'如果count == n_line:',则文件结束垃圾很多.

答案工作,但我想知道我的代码有什么问题,以及为什么我不能读写.谢谢!

Joh*_*nck 10

您正在读取文件并写入文件.不要那样做.相反,您应该在完成写入并关闭它之后写入a NamedTemporaryFile然后将rename其写入原始文件.

或者,如果文件的大小保证很小,您可以使用它readlines()来读取所有文件,然后关闭文件,修改所需的行,然后将其写回:

def editline(file,n_line,text):
    with open(file) as infile:
        lines = infile.readlines()
    lines[n_line] = text+' \n'
    with open(file, 'w') as outfile:
        outfile.writelines(lines)
Run Code Online (Sandbox Code Playgroud)