删除上一行

时间:2018-03-19 21:54:49

标签: python readlines

我不知道是否有可能删除前一行程序在内存中保存的内容?在文件“Server.txt”中我正在寻找单词:Server,但文件会一直覆盖并记住所有这一行,其中以“Server”开头的行(之前也是如此)。我怎样才能删除或打印最后一行?

代码:

filepath = 'server.txt'
    with open(filepath) as fp:
        for single_line in fp.readlines():
            if single_line.startswith("Server"):
                print(single_line)

示例“server.txt”:

    Accept-Ranges: bytes
    ETag: "144-4e5a18dd96d87"
    Server: Apache/2.4.6 (Unix) OpenSSL/1.0.1t PHP/5.5.3
    Content-Length: 324
    Content-Type: text/html

Date: Mon, 19 Mar 2018 21:03:03 GMT
Server: Apache/2.2.21 (Unix) mod_wsgi/3.3 Python/2.4.4 mod_ssl/2.2.21 OpenSSL/0.9.8k PHP/5.2.9
Content-Type: text/html; charset=utf-8

Date: Mon, 19 Mar 2018 21:03:06 GMT
Server: Apache/2.2.11 (Unix) PHP/5.2.9 mod_ssl/2.2.11 OpenSSL/0.9.8k mod_wsgi/3.3 Python/2.7.3
Content-Type: text/html; charset=iso-8859-1

回归是:

Server: Apache/2.2.21 (Unix) mod_wsgi/3.3 Python/2.4.4 mod_ssl/2.2.21 OpenSSL/0.9.8k PHP/5.2.9
Server: Apache/2.4.6 (Unix) OpenSSL/1.0.1t PHP/5.5.3
Server: Apache/2.2.11 (Unix) PHP/5.2.9 mod_ssl/2.2.11 OpenSSL/0.9.8k mod_wsgi/3.3 Python/2.7.3

如何逐个获取这些值或者像我的主题一样,删除前一个?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,该文件将继续更新,并附加到最​​后的附加信息。所以你只想要打印'Server'的最后一个实例。您需要将最新的实例存储到变量中,并在循环完成时打印变量。由于每次找到新实例时它都会覆盖,因此它只会打印最后一个实例。

{{1}}

我添加了'.strip()'到最后,因为你的文字有空格,但是在行的开头没有正确找到'Server'。

如果要保持程序不断运行并打印最新的更新,则需要将代码置于循环中,创建计时器命令,并在每次迭代之前添加清除命令。

参考Clear screen in shell以获取有关清除以前打印信息的其他信息。