有没有办法从我在 Python 中断的地方读取文件?

Is there a way to read a file from where I left off in Python?

我正在尝试读取 Python 中的一个文件,关闭它,然后从我停止读取它的地方再次读取它。

真正的问题:我正在尝试处理每小时更新一次的 Tomcat 日志文件。因此,当我从 Python 结尾读取它时,我得到了重复的(旧的)日志以及新的日志。

编辑:有没有一种有效的方法可以从公共文件中读取新日志?

查看您的位置:offset = f.tell()

回到原来的位置:f.seek(offset)

Relevant point in tutorial

如果您有选择,请让 Tomcat 日志每隔一小时轮换一次。在这种情况下,您只需要读取日志目录中的未读文件即可。

您可以为此使用 pygtail,它会读取日志文件中未被读取的行,这意味着它将从上次处理或停止的位置开始

from pygtail import Pygtail
for line in Pygtail("path to your log file"):
    '''
    the process which you want to do
    '''
  • 在关闭文件之前保存您离开的行号
  • 使用 linecache 模块获取该行作为当前行
  • 这里有一些您可以使用的代码

#导入行缓存模块

导入行缓存

#定义要读取的文件名

文件名="test.txt"

#定义line_number

line_number = 3

# 检索特定行

行=linecache.getline(文件名,line_number)

打印 ("line %i of %s:" % (line_number, 文件名))

打印(行)