如何自动刷新 log.txt 文件
How to auto-refresh a log.txt file
我正在为 Minecraft 服务器制作一个 python 程序,该程序可以自动对物品出价达到特定价格。在 appdata/roaming/.minecraft/logs 中有一个名为 "latest.log" 的聊天记录。这个日志会不断更新我服务器上的每个人在聊天中所说的内容。如果我打开它并查看文本,日志不会自动更新(很明显)。我如何使用 python 脚本来打印日志中的每一行并自动更新?
我在 Windows 8.1 和 Python 2.7.9
在写入数据的进程(可能是服务器)填充或刷新缓冲区之前,数据不会写入 latest.log
文件。在 Python 中可能没有任何方法可以改变它。最好的办法是看看您是否可以将写入过程配置为在每行之后刷新。
所以,我尝试了一些事情,发现我可以这样做来跟踪日志文件(不断更新)
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
def beginread():
loglines = follow(logfile)
for line in loglines:
print line
在 IDLE 中,我将简单地启动名为 beginread 的函数。使用此程序 运行,它将在日志文件更新时不断打印行。
我正在为 Minecraft 服务器制作一个 python 程序,该程序可以自动对物品出价达到特定价格。在 appdata/roaming/.minecraft/logs 中有一个名为 "latest.log" 的聊天记录。这个日志会不断更新我服务器上的每个人在聊天中所说的内容。如果我打开它并查看文本,日志不会自动更新(很明显)。我如何使用 python 脚本来打印日志中的每一行并自动更新?
我在 Windows 8.1 和 Python 2.7.9
在写入数据的进程(可能是服务器)填充或刷新缓冲区之前,数据不会写入 latest.log
文件。在 Python 中可能没有任何方法可以改变它。最好的办法是看看您是否可以将写入过程配置为在每行之后刷新。
所以,我尝试了一些事情,发现我可以这样做来跟踪日志文件(不断更新)
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
def beginread():
loglines = follow(logfile)
for line in loglines:
print line
在 IDLE 中,我将简单地启动名为 beginread 的函数。使用此程序 运行,它将在日志文件更新时不断打印行。