【问题标题】:Viewing a .txt file currently being updated in Python在 Python 中查看当前正在更新的 .txt 文件
【发布时间】:2017-04-18 07:38:25
【问题描述】:

我正在运行一个试图求解非线性方程的程序。这是一个黑匣子情况,所以我不会详细介绍。我基本上给程序提供了一些值,它会吐出 5 个数字,我将后者与一组标准进行比较,它们需要匹配到一定的容差。在搜索输入值时,我不断地向它提供新值,这些输入值给了我符合条件的 5 个数字。

所以,长话短说,我不断产生 5 个数字,我希望它们能符合我的标准。我目前正在以 A、B、C、D、E 格式输出每次迭代的 5 个数字并写入输出 txt 文件。但是,在程序完成之前(如果有的话!),我看不到 A、B、C、D 或 E 是如何收敛的,因为我的 txt 文件在我 .close() 之前是空白的。有什么方法可以让我看到这些值如何以另一种方式随时间变化?如果我的 5 个数字只是到处乱跑,没有收敛到任何东西,我需要考虑一种不同的方法。

【问题讨论】:

  • 使用好的 IDE 以便您可以使用断点进行调试

标签: python python-2.7


【解决方案1】:

你有两个选择:

1 - flush 每行写入后的缓冲区:

from time import sleep

f = open('testfile.txt', 'w')
while True:
    f.write("A, B, C, D, E\n")
    f.flush()
    sleep(1)

2 - 或者,当您使用文本文件时,您可以将其作为行缓冲打开。 有关详细信息,请参阅open 上的文档。
您需要 buffered=1 进行行缓冲:

from time import sleep

f = open('testfile.txt', 'w', buffering=1)
while True:
    f.write("A, B, C, D, E\n")
    sleep(1)

【讨论】:

  • 谢谢!这些选项通常会产生多少开销?每次迭代(因此写入文本文件)大约需要 1 秒,而且我可能会在我正在处理的每个数据集上运行数千次迭代。我希望尽量减少开销。
猜你喜欢
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多