如何从最后一个位置重复读取文件
我试图重复读取系统日志,并且只从上次读取的位置开始。我试图将tell() 的位置保存为一个单独的文件,并在每次读取之前重新加载以进行查找。
lf = open("location.file", 'r')
s = lf.readline()
last_pos = int(s.strip())
lf.close()
sl = open("/var/log/messages", 'r')
sl.seek(last_pos)
for line in sl.readlines():
# This should be the starting point from the last read
last_loc = sl.tell()
lf = open("location.file", "w+")
lf.write(last_loc)
lf.close()
I am trying to read a syslog repeatedly and only start from the point I left off last read. I am trying to save the location of tell() is a sperate file and reload to seek before every read.
lf = open("location.file", 'r')
s = lf.readline()
last_pos = int(s.strip())
lf.close()
sl = open("/var/log/messages", 'r')
sl.seek(last_pos)
for line in sl.readlines():
# This should be the starting point from the last read
last_loc = sl.tell()
lf = open("location.file", "w+")
lf.write(last_loc)
lf.close()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
写成
str(last_loc)
而不是last_loc
。其余的可能是可选的。
w
而不是w+
来写入位置。/var/log/messages
。with
自动关闭文件。strip
。lf
上使用read
而不是readline
。对于
sl
,您可以迭代文件本身,而不是使用readlines
。<前><代码>尝试:
使用 open("location.file") 作为 lf:
s = lf.read()
最后位置 = int(s)
除了:
最后发布= 0
将 open("/var/log/messages") 作为 sl:
sl.seek(last_pos)
对于 sl 中的行:
# 这应该是上次读取的起点
最后一个位置 = sl.tell()
使用 open("location.file", "w") 作为 lf:
lf.write(str(last_loc))
Write
str(last_loc)
instead oflast_loc
.The rest are probably optional.
w
instead ofw+
for writing the location./var/log/messages
when you're done with it.with
to automatially close files.strip
if you're just writing the value.read
instead ofreadline
onlf
.You can iterate over the file itself, rather than using
readlines
, forsl
.你的阅读路线很奇怪。您需要做的是:
1)将值保存为字符串并解析它:
2)将位置保存为 int 并重新读取:
Your readline is weird. What you nee to do is either:
1) save the value as a string and parse it:
2) save and reread the location as an int: