Python程序可删除文本文件中的特定行

Sre*_*raj 2 python text-files

我有一个带有以下几行的文本文件Thailand_Rectangle2_National Parks.txt。

1
2
3
4
5
dy 0.5965
7
Run Code Online (Sandbox Code Playgroud)

现在,我想删除此文本文件中的第六行。

为此,我正在使用以下python代码。

f = open("C:/Users/Sreeraj/Desktop/Thailand_Rectangle2_National Parks.txt","r")
lines = f.readlines()
Run Code Online (Sandbox Code Playgroud)

因此,我将此文本文件的所有行都保存在“ lines”中。

line6 = lines[5]
t = line6[:2]
f.close() 
Run Code Online (Sandbox Code Playgroud)

所以,现在,我有't'=“ dy”。现在,

if t == "dy":
    f = open("C:/Users/Sreeraj/Desktop/Thailand_Rectangle2_National Parks.txt","w")
    for line in lines:
        if lines[5] != line6:
            f.write(line)

f.close()
Run Code Online (Sandbox Code Playgroud)

因此,如果满足条件't'=“ dy”,那么我将打开该文本文件进行写入,并打印除line6以外的所有行(这意味着从该文本文件中删除了line6)。

不幸的是,我在文本文件中得到的行是空白,这意味着没有行被打印为输出。

但是,我希望文本文件中的行如下所示。

1
2
3
4
5
7
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

我只想使用Python编程来解决此问题;因为这是一项主要工作的小任务。

Chr*_*ean 5

您的问题是,lines[5]它将始终等于line6。您从未修改中的第六行lines,因此line6lines[5]仍然相等。因此,条件lines[5] != line6将始终失败。

如果要始终从文件中删除第六行,可以使用enumerate。例如:

with open("file.txt", "r") as infile:
    lines = infile.readlines()

with open("file.txt", "w") as outfile:
    for pos, line in enumerate(lines):
        if pos != 5:
            outfile.write(line)
Run Code Online (Sandbox Code Playgroud)