有没有办法从我在 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)
如果您有选择,请让 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, 文件名))
打印(行)
我正在尝试读取 Python 中的一个文件,关闭它,然后从我停止读取它的地方再次读取它。
真正的问题:我正在尝试处理每小时更新一次的 Tomcat 日志文件。因此,当我从 Python 结尾读取它时,我得到了重复的(旧的)日志以及新的日志。
编辑:有没有一种有效的方法可以从公共文件中读取新日志?
查看您的位置:offset = f.tell()
回到原来的位置:f.seek(offset)
如果您有选择,请让 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, 文件名))
打印(行)