我如何获得连续打印输出数据的python脚本,以输出到行限制文本文件而不是标准终端?

问题描述 投票:0回答:1

我只需要允许文件包含5000行数据,然后再删除最旧的数据,因为python脚本会输出新数据(类似于'bash中的tail命令')。我希望能够通过查看脚本输出到的文本文件来观察正在生成的数据。我需要它能够在后台运行,而无需终端(在这种情况下为ssh会话)处于活动状态。在输出所有数据的python脚本的开始,我尝试了以下方法:

import sys
sys.stdout = open(tail -c 1G > 'output.txt', 'w', buffering=1)

但无济于事。我不反对让bash脚本处理python文件,但我宁愿仅运行python脚本,并尽可能将其输出定向到上述单独的文件。

python linux bash stdout sys
1个回答
0
投票

您正在描述circular buffer,它不是可以由文件支持的数据结构。可以将文件写入(覆盖一些现有内容)或附加到文件中,但是无法在文件中更早地移位字节。像look这样执行的命令通常会写入临时文件,然后将内容复制回原始文件。

如@Luv所建议的,“将最后n行数据持久存储到磁盘”的典型方法是到rotate between several files。您可以在Python(他们建议使用RotatingFileHandler似乎很合理)或RotatingFileHandler中(例如与Bash一起使用)中做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.