我正在尝试使我的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。答案 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