【问题标题】:Python: how to constantly update text linesPython:如何不断更新文本行
【发布时间】:2015-03-21 10:34:06
【问题描述】:

我有一个 20 行的列表,0 或 2。现在我让它根据 ping 结果重写文本文件的 20 行。我有一个单独的程序读取 20 行,但是当没有 20 行时它会产生错误(因为正在写入文本文件)。如何在不重写文档的情况下编辑每个单独的文本行?

    ping ip
    if ping == 0
       f= open("status", 'ab')
       f.write("0\n")
       f.close

这是它如何写入的一个条件。在执行此操作之前,我确实会擦除文档。

【问题讨论】:

  • 如果我理解正确,您正在尝试在这里传递实时数据...程序不应该通过文件进行实时通信。这既不稳定又非常慢。如果不是这种情况,您可能希望用w(写入)而不是a(附加)重写打开它的文件。
  • 同意。相反,您应该做的是使用管道。
  • 文件可能是命名管道?

标签: python text readline


【解决方案1】:

如果我正确理解了标题中 constantly 的用法,那么您是在尝试在此处传递实时数据……程序不应通过文件进行实时通信。这并不稳定,而且非常缓慢。如果不是这种情况,您可能希望用w(写入)而不是a(附加)重写打开它的文件。

if ping == 0
   with open("status", 'wb') as f:
       # write all 20 lines

阅读更多关于modes的信息。

注意:要真正关闭文件,您应该调用 file.close,使用f.close() 而不是f.close。如果您像我建议的那样使用with 作为上下文管理器,那么一旦上下文结束,文件就会关闭(缩进返回with 级别)。

【讨论】:

  • 我有一个 LED 灯条,它显示基于 0 或 2 的颜色。我确实让它从文档中读取。但是你们是对的,它不稳定且缓慢。我已经对其进行了一些修改,我想我想出了如何在不使用文本文件的情况下更新状态。我会尽可能关闭这个问题。感谢您的提示!
  • 也许您应该接受,以便其他寻找类似问题的人可以找到答案。我也会得到 15 分的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2017-02-22
  • 2016-02-01
相关资源
最近更新 更多