使用SH模块(PIP安装sh):from sh import tail# runs foreverfor line in tail("-f", "/var/log/some_log_file.log", _iter=True):

print(line)

[最新情况]

因为.尾巴和._iter=True是一个生成器,您可以:import sh

tail = sh.tail("-f", "/var/log/some_log_file.log", _iter=True)

然后,您可以使用以下方法“getNewData”:new_data = tail.next()

请注意,如果尾缓冲区是空的,它将阻塞直到有更多的数据(从您的问题,它不清楚您想做什么,在这种情况下)。

[最新情况]如果将-f替换为-f,这是可行的,但是在Python中,它将是锁定的。如果有可能的话,我会更感兴趣的是,如果可能的话,我可以调用一个函数来获取我想要的新数据。-伊莱

容器生成器将尾调用放置在一个时间真循环中,并捕获最终的I/O异常,其效果与-F几乎相同。def tail_F(some_file):

while True:

try:

for line in sh.tail("-f", some_file, _iter=True):

yield line        except sh.ErrorReturnCode_1:

yield None

如果无法访问该文件,生成器将不返回任何。但是,如果文件是可访问的,它仍然会阻塞,直到有新的数据为止。我还不清楚你在这件事上想做什么。

雷蒙德·赫廷格的做法似乎相当不错:def tail_F(some_file):

first_call = True

while True:

try:

with open(some_file) as input:

if first_call:

input.seek(0, 2)

first_call = False

latest_data = input.read()

while True:

if '\n' not in latest_data:

latest_data += input.read()

if '\n' not in latest_data:

yield ''

if not os.path.isfile(some_file):

break

continue

latest_lines = latest_data.split('\n')

if latest_data[-1] != '\n':

latest_data = latest_lines[-1]

else:

latest_data = input.read()

for line in latest_lines[:-1]:

yield line + '\n'

except IOError:

yield ''

如果文件无法访问或没有新数据,此生成器将返回“。

[最新情况]最后一个答案的第二个绕到文件的顶部,它似乎在数据耗尽的时候出现。-伊莱

我认为当尾过程结束时,第二行将输出最后十行,-f每当出现I/O错误时。这个tail --follow --retry在大多数情况下,我可以在类似Unix的环境中考虑到行为。

也许,如果你更新你的问题来解释你真正的目标是什么(你为什么想模仿尾巴-重试),你会得到一个更好的答案。最后一个答案实际上不是跟随尾巴,只是读取运行时可用的内容。-伊莱

当然,在默认情况下,尾巴会显示最后10行.您可以使用file.find定位文件末尾的文件指针,我将留给读者一个适当的实现作为练习。

与基于子进程的解决方案相比,IMHO的file.read()方法要优雅得多。

python 读取日志文件_如何在Python中跟踪日志文件?相关推荐

  1. macos 虚拟镜像文件_如何在macOS中使用虚拟文件测试网络或硬盘速度

    macos 虚拟镜像文件 File transfer speeds can vary greatly from device to device. The same holds true for ne ...

  2. chrome查看网页文件_如何在Chrome中直接将文件和网页下载到Google云端硬盘

    chrome查看网页文件 We've all downloaded files from the web to our computer. However, if you'd rather downl ...

  3. git 还原文件到其他版本_如何在Git中还原旧文件版本

    git 还原文件到其他版本 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分 ...

  4. python如何读取uni文件_如何在Python中通过HTTP与UniProt交谈?

    我试图从UniProt获得一些结果,这是一个蛋白质数据库(细节并不重要).我正在尝试使用一种从一种ID转换为另一种ID的脚本.我能够在浏览器上手动执行此操作,但无法在 Python中执行此操作. 在h ...

  5. python队列怎么用_如何在Python中使用多处理队列? - python

    我很难理解多处理队列如何在python上工作以及如何实现它.假设我有两个python模块,它们从共享文件中访问数据,我们将这两个模块称为writer和Reader.我的计划是让读取器和写入器都将请求放 ...

  6. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  7. python绘图背景透明_如何在 Matplotlib 中更改绘图背景

    介绍Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库.在本教程中,我们将研究如何在Matplotlib中更改绘图的背景.导入数据 ...

  8. 怎么用python读取excel图_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  9. python静态变量计数器_如何在Python中使用静态变量在计数

    今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题.如何在Python中使用静态变量来计数.然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量.说实话没 ...

  10. python 读取内存二叉树_二叉树类python

    python中的树数据结构 线性数据中的典型顺序表和链表已经讲完: <顺序表数据结构在python中的应用> <python实现单向链表数据结构及其基本方法> <pyth ...

最新文章

  1. 腾讯AR开放平台今日正式开放,提供识别、追踪、展现等多项能力
  2. (一)docker run 命令参数
  3. 从代码角度揭示:华为鸿蒙的“套壳”真相!
  4. 产业互联网的“神”在哪里?
  5. CleanCodeHandbook Chapter 8: Dynamic Programming(42-47)
  6. 模型相关:SolidWorks创建Cube模型,在3DMax中给不同面添加不同颜色,导出自带纹理的FBX至Unity
  7. weblogic 正在启动 wsee服务_详解LINUX安装部署weblogic集群--第二部分
  8. 开课吧课堂:人工智能行业走向如何?
  9. oracle学习的一些网站收藏
  10. 计算机ppt制作培训心得,ppt培训心得体会总结范文
  11. HTML5 标签大全
  12. 常见的几种多媒体设计框架
  13. 【工具篇】ip2domain - 批量ip反查域名及备案信息工具
  14. 微信好友只有昵称没有微信号_为什么有些好友名片有显示微信号,有些却没有,怎么回事?急...
  15. java -- 百度API 接口使用
  16. 《2023新一代数字办公白皮书》正式发布!| 爱分析报告
  17. MySQL 8.0原理与实战一网打尽,甲骨文数据库专家硬刚5年之作
  18. ORACLE的HINT详解
  19. Sort sort =new Sort(Sort.Direction.ASC,“id“)
  20. 城市公交查询系统android

热门文章

  1. 运行时动态的开关 Spring Security
  2. POJ-3061 Subsequence 二分或尺取
  3. 机器学习-ID3决策树算法(附matlab/octave代码)
  4. Java反射机制介绍
  5. PostgreSQL 备库apply延迟原理分析与诊断
  6. 函数 的 重载 和 函数 模版
  7. 用户注册与登陆(验证和数据库)
  8. [iOS]通过xib定义Cell然后关联UICollectionView
  9. AES加密的C语言实现
  10. 也许,真的有2012