如何在Python中删除文件中的一行

0 投票
2 回答
542 浏览
提问于 2025-04-18 02:55

我试着使用这个链接中的方法:在Python中删除文件中的一行。我稍微改了一下代码,以便更符合我的需求,像这样:

def deleteLine():
    f=open("cata.testprog","w+")
    content=f.readlines()
    outp = []
    print(f.readline())
    for lines in f:
        print(lines)
        if(lines[:4]!="0002"):
        #if the first four characters of a line do not equal
            outp.append(lines)
    print(outp)
    f.writelines(outp)
    f.close()

问题是整个文件都被替换成了一个空字符串,而输出的结果是一个空列表。我的文件并不是空的,我想删除以“0002”开头的那一行。打印f.readline()的结果是一个空字符串。有没有人知道该怎么解决这个问题?

提前谢谢大家,

2 个回答

2

你对文件处理的方式和之前提到的问题完全不同。在之前的问题中,文件是先打开来读取内容,然后关闭,再打开来写入处理后的内容。而在这里,你是先打开文件,然后使用 f.readlines(),这样文件里的所有数据都被读进了内容中,文件指针也移动到了文件的末尾。

1

你打开文件的方式不对,使用了“w+”模式。这个模式是用来写和读的,但一开始会把文件内容清空。如果你想先查看文件内容,应该先用读取模式打开它。如果文件不大,可以把它的内容读到内存里,进行转换后,再用写入模式保存文件。

撰写回答