如何在执行Python脚本期间检测文本文件的更改?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在执行Python脚本期间检测文本文件的更改?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2193字,纯文字阅读大概需要4分钟。
内容图文
我正在使用一个我不会命名的气质网络应用程序.它会不时地遇到问题,当它发生时,它会将堆栈跟踪和错误消息写入exception.log文件.我想及时了解这些问题,所以我有一个Python脚本定期扫描日志(对于cron来说很好).如果exception.log的大小大于零,脚本会将文件的内容转储到我的电子邮件中,然后将它们移动到exception_archive.log.我目前的策略是读取文件,发送电子邮件并在必要时写入异常存档,如果这两个步骤都成功,那么
target = open(target_log, 'w')
target.close()
zorch原始日志.但是,由于我无法预测系统何时写入exception.log,脚本中至少有一点可能会丢失数据 – 系统可能会在读取现有数据后写入日志并决定覆盖文件.此外,我从痛苦的经历中学到,如果不存在exception.log,那么气质的网络应用程序将不会重新创建它 – 它只会丢弃地板上的异常数据.因此,“重命名并重新创建日志文件”的天真解决方案只能将问题推向一层.
那么问题的核心是:我如何(将一个文本文件传输|移动|读写 – 擦除)数据以这样的方式,即如果在我的脚本执行时将新数据写入文件,丢失数据的可能性为零或极小?我怀疑这是一个难题,或者是我刚才没有听到解决方案的解决问题.我也无法扩展应用程序本身 – 管理层对于修补它非常持怀疑态度,而且它不是在Python中,所以我必须从头开始.
附加背景:
[me@server ~]$uname -a
Linux server.example.com 2.6.9-101.ELsmp
#1 SMP Thu Jul 21 17:28:56 EDT 2011 i686 i686 i386 GNU/Linux
[me@server ~]$python
Python 2.3.4 (#1, May 5 2011, 17:13:16)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-11)] on linux2
它是在cruddy共享主机上运行的,这也是我称之为“脾气暴躁”的部分原因.我还称在2011年运行Python 2.3更糟糕的事情.如果我有一个现代的Python工作,这可能会更容易.
我将在下面对Kevin的答案进行修改 – 因为我控制了crontab,我将让脚本在正确的时间戳范围内查找任何内容并对其进行操作.这样做的另一个好处是,相关信息都可以存在于Python脚本中,并且是单一的事实来源.
解决方法:
我会避免在Web应用程序仍在运行时删除异常日志.只需扫描日志即可获取更新而无需进行任何更改.
#lastKnownSizeOfFile is saved somewhere so it persists between executions of this script
if size(file) > lastKnownSizeOfFile: #found an update!
amountToRead = size(file) - lastKnownSizeOfFile
file.seek(lastKnownSizeOfFile)
newData = file.read(amountToRead)
exceptionArchive.write(newData)
emailMe(newData)
lastKnownSizeOfFile += amountToRead
如果您担心日志文件会以这种方式变得太大,请在低活动时间(例如,凌晨2点)定期删除它,此时应用程序不太可能向其写入任何内容.
内容总结
以上是互联网集市为您收集整理的如何在执行Python脚本期间检测文本文件的更改?全部内容,希望文章能够帮你解决如何在执行Python脚本期间检测文本文件的更改?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。