【发布时间】:2020-11-17 14:40:59
【问题描述】:
我正在使用 PySide2 开发一个应用程序,我需要显示一个 HTML 文件的内容,该文件是一种日志文件,因此它在不断变化。我需要在我的应用程序上实时查看这些更改。 有没有一种聪明而快速的方法来做到这一点?目前我不断地从文件中读取并比较最后几行以查看是否有新行:如果有,我将其附加到 QTextEdit 小部件。
我认为也许 Qt 提供了一些功能以更智能的方式实现这一目标。
代码片段
path = some_file.html
with open(path) as file:
old = file.readlines()
try:
last_line = old[-1]
except IndexError:
last_line = ''
while streaming:
line = file.readline()
if line and line != last_line:
qtext_edit.append(line)
last_line = line
【问题讨论】:
-
QFileSystemWatcher 可用于监视文件/文件夹的更改。这有帮助吗?
-
@JarMan 您的意思是每次文件更改时都调用 qtext_edit.setHtml(path) 吗?
-
我只是建议将一个文本行与前一个文本行进行比较不一定是了解文件中是否有新数据的最佳方法。当内容发生变化时,QFileSystemWatcher 可以通过信号通知您。但是,如果它要求您重新加载整个文件,那听起来并不理想。对此我不确定。只是提供想法。
-
@JarMan 我明白了。不幸的是,每次有一个新行时,我都必须添加一个新行。我只是在寻找一种在浏览器中显示 HTML 文件并保持更新的方法。无论如何,您的建议可能有助于减少对
line = file.readline()的调用以及随后的 if 条件。谢谢 -
您可以使用
QTextStream和QFileSystemWatcher的组合(@JarMan 评论)。例如,请参阅this answer。您可以使用如下条件:如果文件在nMinutes中没有更改,则中断外循环。几个月后我的需求出现并尝试时,我会回复。
标签: python html qt real-time pyside2