我不知道是否有可能删除前一行程序在内存中保存的内容?在文件“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
如何逐个获取这些值或者像我的主题一样,删除前一个?
答案 0 :(得分:1)
如果我正确理解您的问题,该文件将继续更新,并附加到最后的附加信息。所以你只想要打印'Server'的最后一个实例。您需要将最新的实例存储到变量中,并在循环完成时打印变量。由于每次找到新实例时它都会覆盖,因此它只会打印最后一个实例。
{{1}}
我添加了'.strip()'到最后,因为你的文字有空格,但是在行的开头没有正确找到'Server'。
如果要保持程序不断运行并打印最新的更新,则需要将代码置于循环中,创建计时器命令,并在每次迭代之前添加清除命令。
参考Clear screen in shell以获取有关清除以前打印信息的其他信息。