【问题标题】:python: reading file which is changingpython:读取正在更改的文件
【发布时间】:2014-01-22 19:15:41
【问题描述】:

我需要编写一个简单的脚本来实时显示/proc/net/xt_recent/PORTSCAN 的内容。这个文件是不断变化的,我想在无限循环中读取它并尽可能准确地显示“瞬时”状态。我的文件的示例内容如下所示:

src=123.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432
src=132.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432
src=231.45.67.89 ttl: 64 last_seen: 4298265432 oldest_pkt: 1 4298265432

我可以使用标准吗

line = f.readline()

或者有没有更好的方法来读取这个文件。我担心的是在读取正在更改的文件(添加、删除的行等)时避免任何可能的不一致

【问题讨论】:

  • 我建议您阅读stackoverflow.com/questions/12523044/…,因为问题似乎非常相似
  • 您是想对这些线条做些什么,还是只想显示它们?你在什么操作系统上?
  • 是的,我需要处理这些行。我的操作系统是 Debian,以防万一。

标签: python


【解决方案1】:

David Beazley 在Generator Tricks for Systems Programmers 上进行了精彩的演讲。

特别是查看处理无限数据部分。您可以使用他的代码实时跟踪文件,例如 Unix 中的tail -f

【讨论】:

    【解决方案2】:

    python 的一大优点是“和你有同样问题”的人提供的大量软件包。

    有关“监视”文件并根据更改采取行动,请参阅:https://pypi.python.org/pypi/watchdog/0.7.0

    有关更通用的“shell”包装解决方案,请参阅:https://pypi.python.org/pypi/plumbum 后者允许您执行from plumbum.cmd import tail,然后在循环中运行tail['/proc/net/xt_recent/PORTSCAN', '-1'],就像您在shell 中一样。

    【讨论】:

      猜你喜欢
      • 2017-03-14
      • 2023-02-22
      • 2022-09-27
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      相关资源
      最近更新 更多