每隔x秒执行一次Python,无需重新打开标签

时间:2015-07-24 21:13:50

标签: python time tabs refresh auto-update

我正在尝试使我的python代码自动更新。问题是代码会在每次运行时提取四个html文件,因此浏览器中会有四个新选项卡。

我尝试使用类似问题的答案进行自动更新:What is the best way to repeatedly execute a function every x seconds in Python?

import time

starttime = time.time()

while True:
  # My code here
  output_file("first.html", title="First HTML Page")
  # More code
  output_file("second.html", title="Second HTML Page")
  # Even more code
  time.sleep(60.0 - ((time.time() - starttime) % 60.0))

这种方法的问题在于它每分钟都会拉出四个标签 - 这意味着四分钟后我已经有了16个标签!

任何人都知道如何使用相同的标签自动更新?我甚至会删除原始标签并替换它们,即使我认为它不那么优雅。

编辑:我正在运行Windows,目前正在使用IE,但我也愿意转向使用Firefox或Chrome。

7 个答案:

答案 0 :(得分:3)

我想你要做的最好的事情是关闭整个程序并重新启动它。如果您使用的是Windows计算机,请添加

from subprocess import call

一开始,放

call("start chrome.exe") #For Google Chrome

最后,

call("taskkill /f /im chrome.exe")

这将完全关闭整个浏览器并重新启动:P

告诉你,如果你使用的是Internet Explorer,请上帝哦,请不要停止“explorer.exe”。这基本上就是停止......一切。

我建议使用一些调度软件来运行您的程序,这样您就不会总是使用RAM。许多人已经说过了

答案 1 :(得分:2)

正如@padraicCunningham在评论中所说,没有办法通过散景重新加载浏览器中的特定标签。因此,您必须通过更直接地控制浏览器来处理此问题。有多种选择,从杀死浏览器之前重新加载(如评论中所建议),通过脚本界面编写浏览器以在浏览器中处理它。

我个人对最后一个错误,这将涉及一点JavaScript。最简单的解决方案可能只是让一个页面在选项卡中打开4个其他页面,然后在计时器上重新加载它们。您可以在此处找到有关如何执行此表单的帮助:

这将要求您的Python应用程序在开始时打开控制页面,您可以使用webbrowser包来执行此操作。

答案 2 :(得分:1)

另一种方式(W3C不鼓励动态更新页面,因为它可能会干扰后退按钮)将在HTML的head部分添加一个刷新标记:

<meta http-equiv="refresh" content="5">

其中内容是刷新前的休眠时间(以秒为单位)

答案 3 :(得分:0)

对不起,我想对此发表评论,但我缺乏声誉。

所以这是我的建议: 循环前关闭文件。 我不是那样的python,所以我不能给出一个代码示例,但也许这可能会有所帮助。

destroyWindow #or something like this. But I think that is Tkinter

close() #http://www.tutorialspoint.com/python/file_close.htm

答案 4 :(得分:0)

如果您想通过下载文件进行自动更新,则可以直接执行get请求,而不是通过浏览器打开它。您也可以创建一个套接字连接并执行更新。这些似乎是更可靠和更优雅的方法。

浏览器方法容易出现人为干预造成的问题。 但是,如果您想按照自己的方式进行操作,则可以首次打开4个选项卡。使用浏览器dom,只需刷新页面即可。 所以它会像:

For every x secs:
    if first time:
        open the relevant tabs
    else:
        refresh the tabs
    check if update available and do the needfull

答案 5 :(得分:-1)

import keyboard

keyboard.press_and_release('F5')

答案 6 :(得分:-3)

  

在Python中每x秒重复执行一次函数的最佳方法是什么?

我不是很好,但我建议使用for loop进行操作。

def function(n):
    for x in n:
    ~~~~~~~~~~~  # Blah, Blah, Blah. Some other code that you want